Использование EL в качестве параметров для выражений макета макроса - PullRequest
0 голосов
/ 16 апреля 2019

Попытка использовать EL для генерации переменной, которая принимает переменную в качестве входных данных для макета макета -> param -> expression / literal. но он продолжает давать мне ошибки компиляции или вводить литерал моего EL.

Есть ли способ сделать это в данный момент?

layout-macro-def (game-details) {
  params {
    param (game) {
      type (Game)
      min (Required) max (One)
    }
  }
// [...]
        for-each (game.external_games) {
          as (item) {
            switch (item.category) {
              case (1) { // Steam
                layout-macro (UriButton) {
                  param (url) { // <<----- Expression for this is giving me issue
                    expression ("https://store.steampowered.com/app/#{value(item.uri)}")
                  }
                  param (image) {
                    literal (https://cdn.discordapp.com/attachments/354331388142419988/567499944391344158/unknown.png)
                  }
                  param (name) {
                    literal ("Steam")
                  }
                }
              }
// [...]

Редактировать добавленный контекст

макет макроса

layout-macro-def (UriButton) {
  params {
    param (url) {
      type (URL)
      min (Required)
    }
    param (image) {
      type (URL)
      min (Required) max (One)
    }
    param (name) {
      type (Name)
      min (Required) max (One)
    }
  }

  content {
    cell-card {
      on-click {
        intent {
          goal: UriRedirect
          value: UriRedirect {
            url {$expr(url)} // <--- Ultimate goal URL with URI appended to the end
            }
        }
      }
      slot1 {
        image {
          shape (Square)
          url ("#{value(image)}")
        }
      }
      slot2 {
        content {
          primary ("#{value(name)}")
        }
      }
    }
  }
}

1 Ответ

1 голос
/ 16 апреля 2019

Оказывается, вы помещали шаблон туда, где ожидалось выражение.Шаблоны содержат выражения (внутри # {}), но сами по себе они не являются выражениями.

Используйте шаблон, как показано ниже.

layout-macro (UriButton) {
  param (url) {
    dialog-template {
    template ("https://store.steampowered.com/app/#{value(item.uri)}")
  }
}
...