在我的Play应用中,我想在文本输入字段中添加自定义属性。因此,我使用这个助手:
@inputText(userForm("username"), Symbol("my-attr") -> "val: username")
我经常使用这个助手,导致丑陋的代码重复。因此,我想将其封装在自定义帮助程序中。
我试过这样:
@(field: play.api.data.Field, args: (Symbol,Any)*)(implicit handler: FieldConstructor, messages: play.api.i18n.Messages)
@inputType = @{ args.toMap.get('type).map(_.toString).getOrElse("text") }
@input(field, args.filter(_._1 != 'type):_*) { (id, name, value, htmlArgs) =>
<input type="@inputType" my-attr="val: @name" id="@id" name="@name" value="@value" @toHtmlArgs(htmlArgs)/>
}
不幸的是,我不知道如何通过调用来使用它,例如:@inputTextMyAttr
?我不确定我是否了解自定义帮助程序,但所需的结果只是调用:
@inputTextMyAttr(userForm("username"))
并自动将htmlArgs
设置为Symbol("my-attr") -> "val: @name"