昨日の
symfonyでhierselect実現!ですが、あのままではsymfonyのフィルイン機能を使った時に不具合があるのでちょっと補足メモ。
#書いておかないと次のプロジェクトできっと同じところにハマるアフォな私…
まず、symfonyのフィルイン(fillin)機能とは、
1.ユーザーが間違ったデータを入力してsubmitボタンを押す(例:郵便番号の桁数違いとか)
↓
2.データを受け取ったアクションが間違いに気付いて(←validate機能)、入力フォームに戻す(handleError+アクション名のメソッドを定義して、sfView::SUCCESS)
↓
3.デフォルトのままではフォームの入力内容が全て消えてしまうが、それではユーザに対して不親切すぎるので、以前の入力内容を自動的にフォームに突っ込む(←これがfillin!)
という感じ。
脱線しまくりw
fillinを有効にするには、validate.ymlファイルで
fillin:
enable: on
と書けば良い。(アプリ全体のfilters.ymlファイルに書く方法もあるけど省略。)
fillinを受ける側のフォームは、各input_tag等のフォームヘルパー関数の引数2つ目(デフォルト値を入れるところ)をnullにする。
※私は最初「''」を指定した状態でフィルインできませんでした。object系のフォームヘルパーを使ってDBからデフォルト値を持ってきてる場合はどうなるんだろう??今度実験してみよう…
で、このフィルイン時に…