2013-04-10 3 views
3

Я пытаюсь создать пользовательский FieldConstructor в scala doc.Несколько полевых конструкторов в PlayFramework 2.1?

я следовать инструкции, построить twitterBootstrapInput.scala.html, и он работает ...

Это мой выход:

output screenshot

Здесь возникает проблема:

Я хочу @helper.inputRadioGroup охватывает «горизонтально», а не вертикально.

(Потому что twitterBootstrapInput.scala.html перекосов @elements.input в <div> блоке)

Но я не знаю, как изменить шаблон, не заражая другие «текстовые поля»?

Должен ли я определить другой implicitFieldConstructor? Или сделать что-то еще?

Я не могу найти пример о том, как решить эту проблему ...

Все пользовательские документы шаблонные слишком редко ...

Может кто-нибудь дать мне пример? Благодаря !

Это мой код (игра 2.1):

@import views.html.helper.FieldConstructor 
@implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.f) } 

@helper.inputRadioGroup(consultForm("currency") 
    , options = Seq(
    "USD" -> "USD" 
    , "HKD" -> "HKD" 
    , "RMB" -> "RMB") 
    , '_label -> "Currency" 
    , '_error -> consultForm("currency").error.map(_.withMessage("select currency")) 
) 

======== апреля/11 обновлен ==============

Спасибо @Schleichardt за то, что он дал мне первый шаг. Я добавляю (FieldConstructor(twitterBootstrapRadioGroup.f) , lang) после inputRadioGroup, кажется, работает. Но даже я пишу простейший @elements.input в шаблоне (никаких других украшений), он по-прежнему расположен вертикально. Как скриншоте:

enter image description here

И выходной исходный HTML код:

enter image description here

Как изменить <span class="buttonset" ...> блок? Должен ли я позвонить @elements.input в шаблоне?

ответ

6

Короткая версия:

@(consultForm: Form[Consult])(implicit lang: play.api.i18n.Lang) 

@import views.html.helper.FieldConstructor 
@implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.f) } 

@* uses twitterBootstrapInput */ 
@helper.inputText(consultForm("name")) 

@* uses anotherFieldConstructor */ 
@helper.inputRadioGroup(consultForm("currency") 
    , options = Seq(
    "USD" -> "USD" 
    , "HKD" -> "HKD" 
    , "RMB" -> "RMB") 
    , '_label -> "Currency" 
    , '_error -> consultForm("currency").error.map(_.withMessage("select currency")) 
)(FieldConstructor(anotherFieldConstructor.f), lang) 


@* uses twitterBootstrapInput */ 
@helper.inputText(consultForm("anotherFormFieldName")) 

anotherFieldConstructor является дополнительным FieldConstructor вы должны создать. Он должен поместить переключатели в соответствии с вашими потребностями.

Длинная версия:

В API DOC для inputRadioGroup здесь: http://www.playframework.com/documentation/api/2.1.0/scala/index.html#views.html.helper.inputRadioGroup $

Поскольку inputRadioGroup является Scala одноточечно объекта следующие утверждения кода одинаковы:

helper.inputRadioGroup(consultForm("currency") /* etc. */) 
helper.inputRadioGroup.apply(consultForm("currency") /* etc. */) 

применить метод inputRadioGroup имеет два списка параметров. Во втором списке используются неявные параметры.

С @implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.f) } вы указали, что twitterBootstrapInput FieldConstructor является «параметром по умолчанию» для обработчика во втором списке параметров inputRadioGroup.

Но вы можете переписать его с явными параметрами:

helper.inputRadioGroup(consultForm("currency") /* etc. */)(FieldConstructor(anotherFieldConstructor.f), lang) 

Если вы используете контроллеры Scala шаблона необходим дополнительный список параметров для Ланга:

@(consultForm: Form[Consult)])(implicit lang: play.api.i18n.Lang) 

Вы не можете иметь два неявных FieldConstructors в шаблоне.

+0

Привет, спасибо, что проинструктировал меня о первом шаге. Но выход по-прежнему находится вертикально. Как изменить шаблон '@ elements.input'? (Я обновил свой вопрос, добавив код и скриншот) – smallufo

+0

@smallufo Я бы предположил, что это проблема CSS в этот момент. Вероятно, '

+0

Спасибо, это работает. После переопределения дисплея: блок для отображения: встроенный, радиостанции расположены горизонтально. Но мне все еще интересно, как изменить шаблон «element.input»? любые документы? – smallufo

Смежные вопросы