Я новичок в Play Framework и все еще пытаюсь понять некоторые вещи с новым механизмом шаблонов Scala.
Допустим, у меня есть следующая структура пакета:
app/
app/controllers/Items.scala
app/models/Item.scala
app/views/layouts/page.scala.html
app/views/item/show.scala.html
app/views/item/details.scala.html //partial
И это мой шаблон предмета/шоу:
@(item: Item, form: Form[Item])(implicit flash: Flash)
@layout.page() {
@*want to include details partial, wont work due to item param*@
@item.details(item)
}
Поскольку включение другого шаблона (например, включение элемента/деталей выше) является точно таким же синтаксисом, что и доступ к параметру шаблона (например, элементу выше), очевидно, что это существующее соглашение об именах не будет работать без каких-либо изменений.
Я знаю, что могу переименовать свой пакет «app.views.item» в «app.views.items» и полагаться на формы единственного/множественного числа, чтобы отличать представление от имени параметра, но это не кажется очень простым решением. Кроме того, что, если я действительно хочу, чтобы имя параметра совпадало с именем пакета представления?
Одна идея, которую я имею, состоит в том, чтобы добавить ко всем моим представлениям дополнительный пакет верхнего уровня:
app/views/views/item/details.scala.html
Таким образом, синтаксис включения будет @views.item.details(), но опять же это, очевидно, хак.
Какой хороший способ избежать этой проблемы? Как я могу лучше организовать свой код, чтобы избежать таких конфликтов имен?
Большинство других шаблонизаторов используют такие операции, как «include» или «render», чтобы указать частичное включение. Я не хочу никого здесь обидеть, но настолько ли лаконичен синтаксис шаблонизатора Play Scala, что он фактически диктует организацию кода?
@views.item.details(item)
- person ndeverge   schedule 20.10.2012@app.views.item.details(item)
, а также@views.item.details(item)
. Какие-либо предложения? - person kgx   schedule 20.10.2012@views.html.item.details(item)
. - person kgx   schedule 20.10.2012