我正在使用Play框架2和表单与Bootstrap 3,因此需要逐个字段地更改输入元素周围的标记。我已经阅读了有关为每个字段创建和指定不同FieldConstructor值的答案,但这看起来过于复杂,前端开发人员/设计人员难以理解。所以我正在寻找一种更直接的方式。
到目前为止,我已经能够创建一个帮助程序,让我可以内联定义FieldConstructor模板:
views/helper/forms/customField.scala.html
@(createElement: (views.html.helper.FieldConstructor) => Html)(template: (views.html.helper.FieldElements) => Html)
@createElement(
views.html.helper.FieldConstructor(template)
)
然后我可以在每个视图中执行此操作:
@customField(implicit fc => helper.inputText(loginForm("email"),
'id -> "txtEmail", 'placeholder -> "Email address"
)) { f =>
<div class="form-group @if(f.hasErrors) {has-error}">
<label class="sr-only" for="@f.id">Email address</label>
@f.input
@if(f.hasErrors){
<div class="help-block"> @f.errors.mkString(", ")</div>
}
</div>
}
有没有更好的方法来做到这一点,所以我可以减少第二块中的一些混乱?这种方法是否存在任何问题,例如在性能方面,例如每次呈现表单时重新创建FieldConstructor?