CakePHP2.xでのフォームの初期値の設定
Formヘルパーのメソッドを使って作成するフォームの初期値は、Viewにメソッドの呼び出しを書く際に
などと直接直接設定することができますが、そーすると例えばフォームの値をnullで更新した場合、
更新結果をフォームに入れる際に、どーやら「nullが来た=default値を入れる」みたいな感じになってるのか、
正しい更新結果が反映されませんでした。空欄にならないといけないはずなのに初期値が入ってしまってます。
それと、やっぱり初期値はできればviewで設定せず、modelかcontroller内で書きたいw
ということで、model内に書こうと思ってやり方をぐぐってみました。
すると「フォームのデフォルト値はcontroller内に設定したほーがーいーよ」みたいな記述があります。
そんなわけでcontrollerの方で設定してみることにしましたw
CakePHP1.x系では、controller内で$this->data[‘Koge’][‘moge’] = ‘デフォルト値’という
書き方をすれば良かったみたいですね。しかし2.x系だと$this->dataは非推奨(read only)となってしまったようです。
んではどう書くかというと
// POSTがあった際の処理
} else {
$this->request->data[‘Koge’][‘moge’] = ‘デフォルト値’
}
てな具合で$this->request->dataに入れとくと、$this->set()を介さずとも
自動的に設定した値が初期値としてFormヘルパーで作成したフォームに入ってくれました。
$this->request->dataってREQUESTされた値の処理とかにしか使わないのかと思ってたら
こーいう使い方もするんですねw
(もちろんこれが正しいかどうかは初心者の自分には判別がつきませんw)
てなかんじでどっとおはらいw
技術評論社
売り上げランキング: 108
コメントを残す