Я сторонник по торговле, но меня попросили перейти к проекту Scala, который использует платформу Play, и включает в себя Twirl. Я пытаюсь создать шаблон, который отображает несколько различных выходов в зависимости от строки, которая передается вScala/Twirl переменные и область/определение
Вот мой код:.
@(status: String)(implicit messages: Messages)
@{
if(status == "00") {
val pageTitle = "Page title"
val appStatus = "className"
val title = "message"
val subTitle = "message"
val step1Status = "className"
val step2Status = "className"
val step3Status = "className"
val image1 = "/customs/assets/images/image.png"
val image2 = "/customs/assets/images/image.png"
val image3 = "/customs/assets/images/image.png"
val optionalHeading = ""
val optionalParagraph = ""
val listContents = "<li>@Messages('message')</li><li>@Messages('message')</li>"
val optionalLink = "<br /><a class='button' href='@routes.DashboardController.display(custom)' role='button'>@Messages('message')</a>"
}
if(status == "01") {
//Other variables
}
if(status == "04") {
//Etc...
}
}
@layout(${pageTitle}) {
<div class="content__body">
<div class="hero">
<div class="${appStatus}">
<h1 class="bold-large">@Messages(${title})</h1>
<p>
${afterSubTitle}
</p>
<ol class="appstatus-steps">
<li><span class="${step1Status}"><img alt="Complete" title="Complete" src=" + ${image1} + ">@Messages("messages.Received")</span></li>
<li><span class="${step2Status}"><img alt="Complete" title="Complete" src=" + ${image2} + ">@Messages("messages.Processing")</span></li>
<li><span class="${step3Status}"><img alt="Complete" title="Complete" src=" + ${image3} + ">@Messages("messages.Decision")</span></li>
</ol>
</div>
</div>
${optionalHeading}
${optionalParagraph}
<h2>@Messages("messages.next")</h2>
<ul class="list list-bullet">
${listContents}
</ul>
${optionalLink}
</div>
}
Итак, как вы можете видеть, идея заключается в том, что это страница вызывается с кодом (статусом) и на основе этой строки определяется ряд переменных, которые изменяют способ формирования страницы; содержание/классы CSS/изображений и т.д.
Это не работает (вы можете быть удивлены, узнав!)
Это действительно неясно, почему это не хотя. Я думал, что вы обратились к переменным, используя формат $ {Variable}, но возможно, что вы должны использовать формат @Variable.
Даже когда я пытаюсь изменить их на @Variable, у меня все еще возникают проблемы, и я слабо понимаю, что это связано с областью действия Scala/Twirl, и есть ключевое слово «define», которое можно использовать. Я прочитал документацию, но я ее не понимаю.
Может ли кто-нибудь пролить свет на это?
EDIT
Хорошо, давайте рассмотрим следующий код вместо:
@(status: String)(implicit messages: Messages)
@{
if(status == "00") {
val myClass = "custom-class-1"
}
if (status == "01") {
val myClass = "custom-class-2"
}
@layout("page title") {
<div class="@myClass">This is a div</div>
}
Так «все, что я хочу делать» :) есть возможность определить различные переменные, основываясь на и затем использовать эти переменные в шаблоне страницы.
Это имеет смысл? Я так новичок в Scala, поэтому Tuples/Defining теряется на меня в данный момент, но я учусь!
О, небольшая ошибка :) В twirl всегда есть некоторые трюки, следовало бы попробовать на intellij: p – pedrorijo91
Ah! Это вихрь? Я задавался вопросом, не так ли, - не мог бы разобрать его без тебя, хотя так спасибо! –