如何为复选框定义自定义scala输入帮助器

时间:2015-09-07 14:07:22

标签: scala templates playframework

我正在尝试为Scala中的Play Framework构建一个输入助手。

我想将radiocheckbox类型的输入打印得与标准textpassword输入类型不同?

这是我的自定义助手:

@(elements: helper.FieldElements)

<div class="form-group">
    <label for="@elements.id" class="col-lg-2 control-label">@elements.label</label>
    <div class="col-lg-10">
        <input type="text" class="form-control" id="@elements.id" />
    </div>
</div>

但这会打印text input而不是checkbox input。这是一种奇怪的行为。

我已阅读文档,但无法找到相关内容。

以下是我将此helper导入view的方式:

@implicitFieldConstructor = @{ FieldConstructor(generic.views.html.FormHelpers.twitterBootstrapInputSupraClub.render) }
@checkboxFieldConstructor = @{ FieldConstructor(generic.views.html.FormHelpers.twitterBootstrapInputSupraClubCheckbox.render) }

这就是我在view中调用助手来构建输入(生成输入)的方法:

@inputText(
    accountRegistrationForm("email"),
    '_label -> "email"
)

@inputPassword(
    accountRegistrationForm("password"),
    '_label -> password
)

@inputRadioGroup(
    accountRegistrationForm("regulationAcceptance"),
    options = Seq("true"->"Yes"),
    '_label -> "I agree with regulation",
    'type -> "radio"
)(handler = checkboxFieldConstructor, implicitly[Lang])

1 个答案:

答案 0 :(得分:1)

我可能在这里遗漏了一些东西,但就我所知,你似乎错过了正确的输入类型。

在您的助手中,尝试将<input type="text"...更改为<input type="radio"...

您也可以动态传递输入类型。 e.g。

@(elements: helper.FieldElements, inputType: String)

<div class="form-group">
    <label for="@elements.id" class="col-lg-2 control-label">@elements.label</label>
    <div class="col-lg-10">
        <input type="@inputType" class="form-control" id="@elements.id" />
    </div>
</div>

修改

我对单选按钮有类似的东西:

鉴于我的userDetailForm包含canLogOn:

"company" -> nonEmptyText,
"canLogon" -> boolean,
"canTrade" -> boolean,

我在视图中创建了一个函数:radioSet(fieldName: String)

@radioSet(fieldName: String) = {
   <label for="@fieldName">Can Logon</label>
   <input name=@fieldName id=@fieldName type="radio" value = "true"  
   @if(userDetailForm(fieldName).value.getOrElse("false").equals("true"))
   {checked}>
}

然后我在需要时打电话给它:

@radioSet("canLogon")

我得到:http://imgur.com/RG60wxV(抱歉,我无法发布图片)