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)
  /** フィールドに対するラベルの表示 */