§自定义字段构造函数
字段渲染不仅包含 <input>
标签,还需要一个 <label>
以及可能由您的 CSS 框架用来装饰字段的其他标签。
所有输入帮助器都接受一个隐式 FieldConstructor
来处理这部分。 默认的(如果作用域中没有其他字段构造函数可用,则使用)生成类似于以下的 HTML
<dl class="error" id="username_field">
<dt><label for="username">Username:</label></dt>
<dd><input type="text" name="username" id="username" value=""></dd>
<dd class="error">This field is required!</dd>
<dd class="error">Another error</dd>
<dd class="info">Required</dd>
<dd class="info">Another constraint</dd>
</dl>
此默认字段构造函数支持您可以在输入帮助器参数中传递的其他选项
'_label -> "Custom label"
'_id -> "idForTheTopDlElement"
'_help -> "Custom help"
'_showConstraints -> false
'_error -> "Force an error"
'_showErrors -> false
§编写您自己的字段构造函数
您通常需要编写自己的字段构造函数。从编写类似于以下的模板开始
@(elements: helper.FieldElements)
<div class="@if(elements.hasErrors) {error}">
<label for="@elements.id">@elements.label</label>
<div class="input">
@elements.input
<span class="errors">@elements.errors.mkString(", ")</span>
<span class="help">@elements.infos.mkString(", ")</span>
</div>
</div>
注意:这只是一个示例。您可以根据需要使其变得更复杂。您还可以使用
@elements.field
访问原始字段。
现在使用此模板函数创建一个 FieldConstructor
object MyHelpers {
import views.html.helper.FieldConstructor
implicit val myFields: FieldConstructor = FieldConstructor(html.myFieldConstructorTemplate.f)
}
要使表单帮助器使用它,只需在您的模板中导入它即可
@import MyHelpers._
@helper.inputText(myForm("username"))
然后它将使用您的字段构造函数来渲染输入文本。
您也可以为您的 FieldConstructor
设置一个内联的隐式值
@implicitField: FieldConstructor = @{ helper.FieldConstructor(myFieldConstructorTemplate.f) }
@helper.inputText(myForm("username"))
下一步:使用 Json
在此文档中发现错误?此页面的源代码可以在 此处 找到。在阅读 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?转到 我们的社区论坛 与社区开始对话。