2013-04-10 71 views
3

我想在scala文檔中構建一個自定義FieldConstructor。PlayFramework 2.1中的多個FieldConstructor?

我按照指示,建立一個twitterBootstrapInput.scala.html, 和它的作品...

這是我的輸出:

output screenshot

這裏談到的問題:

我想要的@helper.inputRadioGroup跨越「水平」,而不是垂直。

(因爲twitterBootstrapInput.scala.html<div>塊扭曲@elements.input

但我不知道如何修改模板不會感染其他「文本框」?

我應該定義另一個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爲我提供了第一步。我在inputRadioGroup之後追加(FieldConstructor(twitterBootstrapRadioGroup.f) , lang),似乎有效。但是,即使我在模板中編寫最簡單的@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。它應該根據您的需要放置單選按鈕。

龍版本:

爲inputRadioGroup的API文檔是在這裏:http://www.playframework.com/documentation/api/2.1.0/scala/index.html#views.html.helper.inputRadioGroup $

由於inputRadioGroup是斯卡拉單獨的對象下面的代碼語句是相同的:

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

的inputRadioGroup的應用方法有兩個參數列表。第二個列表使用隱式參數。

對於您指定的@implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.f) }twitterBootstrapInput FieldConstructor是inputRadioGroup的第二個參數列表中處理程序的「默認參數」。

但你可以明確的參數覆蓋它:如果你使用Scala的控制器模板需要郎額外的參數列表

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

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

你不能有兩個隱FieldConstructors在模板中。

+0

嗨,謝謝你指導我的第一步。但輸出仍然是垂直的。如何修改'@ elements.input'模板? (我更新了我的問題,附加代碼和屏幕截圖) – smallufo 2013-04-11 10:39:05

+0

@smallufo我想這是一個CSS問題。 '

+0

謝謝,它的工作原理。覆蓋顯示:塊以顯示:內聯後,無線電橫向跨越。但我仍然想知道如何修改'elements.input'模板?任何文件? – smallufo 2013-04-12 02:57:20