Lv.16 フォームヘルパー勢ぞろい![play framework2.0] [java]

※ローカルだとplay-2.0\framework\src\play\src\main\scala\views\helperに入ってるinputText.scala.htmlなどを呼び出している。

「@helper.inputText」こいつはすごい!便利!

Htmlふつうに書いててよくイージーミスする箇所が適切に補助されるイメージ。

ヘルパーたちはscalaで定義されているので、scala音痴な自分にはあまり中身のことは
わからないけど、なんとなくフィーリングで読んでも分かる簡潔さでした。

目次

formタグを使おう!

これでconf/routesの規定どおりのパラメーターを持つフォームを作ってくれる。

[java toolbar=”false”]
// controller
return ok(index.render(new Form(User.class)));[/java]
[java toolbar=”false”]
// template
@helper.form(action = routes.Application.submit()) {}[/java]
[java toolbar=”false”]// 出力されるHTML

[/java]

[java toolbar=”false”]// conf/routeの定義
GET /submit controllers.Application.submit()[/java]

idやらの属性も自由に指定できる。記述方法が独特?なんだろうこれ。

[java toolbar=”false”]
@helper.form(action = routes.Application.submit(),
‘id -> “myForm”){}
[/java]
[java toolbar=”false”]//出力されるHTML

[/java]

アポストロフィーが1つ必要になるっぽい。idの前に1つついてる。「’id」みたいに。
個人的にはアポストロフィーは閉じたくなるけど、閉じるとコンパイルエラーが起きる。

inputの記載方法!

[java toolbar=”false”]
//これはテンプレート引数
@(myForm: Form[User])

@helper.form(action = routes.Application.submit()) {
@helper.inputText(myForm(“username”))
@helper.inputPassword(myForm(“password”))
}
[/java]

[java toolbar=”false”]//出力されるHTML

Required

[/java]

inputが普通に出力されるのではなくて、dlタグの子要素として出力される点に注目。
これが何気に便利。dlタグの使い方がこれで正しいのかは分からないけど、一連の定義だと
思えば意味的にもdlタグは正しいのかも。

ラベルも出力してくれている。このラベルとかはもっと柔軟に変えることができるのですが、
それは次回。とりあえず基本的な記述方法を染みこませる方が先決かと。

ちなみにここでもさっきのformタグと同じように好きな属性を追加することができる。例の
独特な記述方法でもって。

※「->」はjavaではなくてscalaの表記。phpなどでも使われる。意味合いとしては連想配列のKey→Valueみたいなマッピング関係を表している。id -> usernameを敢えてjava的に書くと、map.put(“id”,”username”)と同じような関連付けを行っている。
[java toolbar=”false”]
@helper.inputText(myForm(“username”), ‘id -> “username”,
‘size -> 30)[/java]
[java toolbar=”false”]//出力されるHTML

[/java]

inputText.scala.htmlの一部抜粋すると、以下のように定義されていることがわかる。

[java toolbar=”false”]@input(field, args:_*) { (id, name, value, htmlArgs) =>

}[/java]

inputTextの第一引数「myForm」が上記のfieldに当たる。他はargs、だと思う。
inputText以外にもいろいろ定義されているので、全部書いておきます。

ヘルパータグ 定義ファイルの一部抜粋
inputDate.scala.html
[java toolbar=”false”]
@input(field, args:_*) { (id, name, value, htmlArgs) =>

}[/java]
inputFile.scala.html
[java toolbar=”false”] @input(field, args:_*) { (id, name, value, htmlArgs) =>

}
[/java]
inputPassword.scala.html
[java toolbar=”false”] @input(field, args:_*) { (id, name, value, htmlArgs) =>

}[/java]
inputRadioGroup.scala.html
[java toolbar=”false”]
@input(field, args:_*) { (id, name, value, htmlArgs) =>

@options.map { v =>


}

}
[/java]
inputText.scala.html
[java toolbar=”false”] @input(field, args:_*) { (id, name, value, htmlArgs) =>

}
[/java]

アセスメント

  • formタグの使い方が分かる
  • input type=textの出力方法が分かる

公式ドキュメントはForm template helpersでした。
次回もこれの続き。もうちょっと複雑になる。