Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。
Play Framework 2.8.x のScala 用フォーム入力サンプルに、 都道府県を選択するメニューを追加したときのメモです。
今回は、都道府県メニューに表示された、Minimum value: 1 Maximum value: 47 Numericを表示しないようにしました。
以下、目次
前提
- Play Framework 2.8.x のScala 用フォーム入力サンプルにおいて、 inputText 要素をselect 要素に変更
- Form の入力項目は都道府県(prefecture : Int)、および値段(price : Int)
変更内容
Form の入力項目都道府県を(マッピングを)Int からString 変更しました。
表示された内容から、以下の方法がありそうで
- 都道府県のkey (が制約Int (min = 0, max = 47) になっている)を無くす
- 表示しているhelper に非表示の機能があればつかう
- 生成されたhtml から表示部分を削除する
都道府県を Int -> String でマッピングする必要は今のところないなあ、と考えて
以下のとおりに変更。
/app/views/Prefecture.scala
package views import scala.collection.immutable.ListMap object Prefecture { val allPrefecture: ListMap[String, String] = ListMap( "HOKKAIDO" -> "北海道", "AOMORI" -> "青森", "IWATE" -> "岩手", "MIYAGI" -> "宮城", "AKITA" -> "秋田", "YAMAGATA" -> "山形", "FUKUSHIMA" -> "福島", "IBARAKI" -> "茨城", "TOCHIGI" -> "栃木", "GUNMA" -> "群馬", "SAITAMA" -> "埼玉", "CHIBA" -> "千葉", "TOKYO" -> "東京", "KANAGAWA" -> "神奈川", "NIIGATA" -> "新潟", "TOYAMA" -> "富山", "ISHIKAWA" -> "石川", "FUKUI" -> "福井", "YAMANASHI" -> "山梨", "NAGANO" -> "長野", "GIFU" -> "岐阜", "SHIZUOKA" -> "静岡", "AICHI" -> "愛知", "MIE" -> "三重", "SHIGA" -> "滋賀", "KYOTO" -> "京都", "OSAKA" -> "大阪", "HYOGO" -> "兵庫", "NARA" -> "奈良", "WAKAYAMA" -> "和歌山", "TOTTORI" -> "鳥取", "SHIMANE" -> "島根", "OKAYAMA" -> "岡山", "HIROSHIMA" -> "広島", "YAMAGUCHI" -> "山口", "TOKUSHIMA" -> "徳島", "KAGAWA" -> "香川", "EHIME" -> "愛媛", "KOCHI" -> "高知", "FUKUOKA" -> "福岡", "SAGA" -> "佐賀", "NAGASAKI" -> "長崎", "KUMAMOTO" -> "熊本", "OITA" -> "大分", "MIYAZAKI" -> "宮崎", "KAGOSHIMA" -> "鹿児島", "OKINAWA" -> "沖縄" ) }
結果
表示が消えました。
変更してみて
そもそも、Minimum value 等のメッセージはなぜ表示されるのかというと、
PalyFramework 2.8.x のドキュメント
All input helpers take an implicit FieldConstructor that handles this part. The default one (used if there are no other field constructors available in the scope), generates HTML like:
だそう。
これを制御するオプションは
This default field constructor supports additional options you can pass in the input helper arguments:
'_showConstraints -> false
だそうで、
Github のコメントのとおりにちょっと変更して(ドキュメント記載方法では上手くいかないので)
- @helper.inputText(form("price")) + @helper.inputText(form("price"), Symbol("_showConstraints") -> false)
こちらでも表示を消せました。
Heroku 公開はこちら
以上でした。