Документация о движке шаблонов Word 2.0 немного.
Как создать тег с помощью шаблона Scala?
Документация о движке шаблонов Word 2.0 немного.
Как создать тег с помощью шаблона Scala?
Механизм шаблонов в игре 2.0 напрямую поступает из модуля воспроизведения 1.0 scala. Если вы все еще задаетесь вопросом, какие преимущества делает функциональный язык, такой как scala, приводит к картине, хорошо это, безусловно, одна из областей, где он сияет.
Демонстрация:
В синтаксисе scala тег - это не что иное, как вызов функции. что интересно, что фрагменты html считаются самими функциями, что позволяет использовать самые мощные конструкции замещения.
Определите html-страницу под названием mytag.scala.html
Файл: приложения/просмотров/mytags/mytag.scala.html
@(level:String = "error", index: Int)(body: (String) => Html)
@level match {
case "success" => {
<p class="success" index="@index">
@body("green")
</p>
}
case "warning" => {
<p class="warning" index="@index">
@body("orange")
</p>
}
case "error" => {
<p class="error" index="@index">
@body("red")
</p>
}
}
Тег выше принимает 3 параметра в 2 различных группах параметров:
Теперь посмотрим, как мы можем использовать этот тег:
@import views.mytags._
@mytag("error",2) { color =>
Oops, something is <span style="color:@color">wrong</span>
}
Прежде чем мы сможем использовать тег (или функцию), нам нужно сообщить Игроку о том, где он находится: это цель оператора import. Обратите внимание, что местоположение (путь) файла тега не имеет значения, если вы настраиваете местоположение импорта, как и в пакетах Java.
Выполняет сам вызов, который является простым. Обратите внимание, однако, что мы передаем параметризованный фрагмент html в тег.
Для получения дополнительной информации вы можете найти документацию scala на этом URL
Play 2.0 в конечном итоге будет иметь собственную документацию.
Полностью ненужный ответ, но только для обучения моего scala. Разве это не будет работать и быть короче, когда будет ясно?
@(level:String = "error", index: Int)(body: (String) => Html)
<p class="@level" index="@index">
@body(
@level match {
case "success" => "green"
case "warning" => "orange"
case "error" => "red"
}
)
</p>
Я получаю ошибку компилятора, когда я использовал первый пример. Удалите "виды". в процессе импорта решена проблема
использовать @import mytags._
Полный пример (http://www.playframework.com/documentation/2.1.1/JavaTemplateUseCases):
Let’s write a simple views/tags/notice.scala.html tag that displays an HTML notice: @(level: String = "error")(body: (String) => Html) @level match { case "success" => { <p class="success"> @body("green") </p> } case "warning" => { <p class="warning"> @body("orange") </p> } case "error" => { <p class="error"> @body("red") </p> } }
И теперь давайте использовать его из другого шаблона:
@import tags._
@notice ( "error" ) {color = > Ой, что-то не так}