我正在尝试为Scala中的Play Framework构建一个输入助手。
我想将radio
和checkbox
类型的输入打印得与标准text
或password
输入类型不同?
这是我的自定义助手:
@(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])
答案 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(抱歉,我无法发布图片)