play2.0のフォームテンプレートヘルパーの表示項目を細かく制御する
play2.0 の scala template のフォームテンプレートヘルパーは便利なんだけど飾りが多すぎてちょっとルールから抜けようとすると結構大変
とりあえずこんなのを用意しておけば
fieldOnly.scala.html
@(elements: views.html.helper.FieldElements) @elements.input
使い方
views.html.helper.checkbox(form("delete"))(fieldOnly,implicitly[Lang])
出力
<input type="checkbox" id="delete" name="delete" value="true" >
他にFieldElementを生成するだけのコードとかも用意しておいた方が便利そう
import play.api.templates.Html import views.html.helper.FieldElements import views.html.helper.FieldConstructor import play.api.data.Field /** id属性を計算する */ def getId(field: Field, args: Seq[(Symbol, Any)]): String = args.toMap.get('id).map(_.toString).getOrElse(field.id) /** フィールドのみを表示する FieldConstructor */ object fieldOnly extends FieldConstructor { def apply(elements: FieldElements): Html = elements.input } /** FIeld から FieldElement型にする */ def fieldElemet(field: Field, args: (Symbol, Any)*)(implicit lang: play.api.i18n.Lang): FieldElements = FieldElements(getId(field, args), field, Html.empty, args.filter(arg => !arg._1.name.startsWith("_") && arg._1 != 'id).toMap, lang) /** フィールドに対するラベルの表示 */