Интересно, поддерживает ли проигрыватель 2.0.3 и выше else if
в представлениях? Я только читаю, что нужно писать так: if {...}else{if{...}else{...}}
не могу поверить в это.
Поддерживает ли Playframework 2.0.x <else if> в шаблонах
Ответ 1
Я использовал @перед вторым, если:
@if (true) {
...
} else { @if (true) {
...
} else {
...
}}
Ответ 2
Я также смог получить
@{if (true) "foo" else if (true) "bar" else "baz"}
работать. Имейте в виду, что большинство языков программирования не поддерживают "else if" в качестве лексического токена. Это отдельные команды. Блок кода, выполняемый командой "else", является оператором "if".
Обратите внимание, что вы можете смешать XHTML с предложением:
@{if (true) <b>foo</b> else if (false) "bar" else "baz"}
Я согласен с biesior, что, как правило, хорошая идея вставить логику состояния в контроллер, тогда у вас могут быть разные представления для разных состояний, причем общие компоненты имеют свои собственные под-представления.
Ответ 3
Ответ @Todd Flanders правильный. В обертке @{} вы можете написать свой обычный Scala код. Пример
@{
if (profile.sex == 0) {
<p class="col-md-6">Other</p>
} else if (profile.sex == 1) {
<p class="col-md-6">Male</p>
} else {
<p class="col-md-6">Female</p>
}
}
Ответ 4
Нет, это не так. Он позволяет использовать только if(condition) {then...} else {otherwise...}
Для получения дополнительных возможностей вам нужно использовать Match Matching (аналогично PHP switch()
)
В этом случае _
является параметром по умолчанию.
Образец из предыдущей версии Play Autheticate (теперь то же самое происходит с отражениями в контроллере)
@(url: String, token: String, name: String)
@defining(lang().code) { langcode =>
@langcode match {
case "de" => {@_password_reset_de(url,token,name)}
case "pl" => {@_password_reset_pl(url,token,name)}
case _ => {@_password_reset_en(url,token,name)}
}
}
Итак, может быть, лучший вариант для вас - это разрешение условия в контроллере и передача его в качестве параметра для представления?
Ответ 5
Нет, "else if" не поддерживается в шаблонах scala: Поддерживает ли поддержка фреймворка 2.0 вложенную инструкцию if в шаблоне?
Вы можете использовать сопоставление с образцом или вы можете поставить, если внутри else.
Ответ 6
Вы можете использовать switch statement
в Scala
для его достижения.
Пример:
if(x>2){
<block 1>
} else if(x>0) {
<block 2>
} else {
<block 3>
}
Перевод:
x match {
case x if(x>2) => {<block 1>}
case x if(x>0) => {<block 2>}
case _ => {<block 3>}
}
Надежда может помочь вам в некоторых случаях, и надеюсь, что игровая платформа вскоре поддержит else if
.
Ответ 7
Теперь if else if
поддерживается в последней playframework. Обсуждение здесь https://github.com/playframework/twirl/issues/33
Вы можете использовать следующее:
@if(something) {
...
} else if (somethingElse) {
...
} else {
...
}