あべてっく

役に立ったり立たなかったりする内容を備忘録的にちょこちょこと。
 

CakePHP2.xでのフォームの初期値の設定

投稿日 2012年4月27日  カテゴリ : PHP  タグ :

Formヘルパーのメソッドを使って作成するフォームの初期値は、Viewにメソッドの呼び出しを書く際に

echo $this->Form->input(‘hoge’, array(‘default’=>’ほげほげ’));

などと直接直接設定することができますが、そーすると例えばフォームの値をnullで更新した場合、
更新結果をフォームに入れる際に、どーやら「nullが来た=default値を入れる」みたいな感じになってるのか、
正しい更新結果が反映されませんでした。空欄にならないといけないはずなのに初期値が入ってしまってます。

それと、やっぱり初期値はできればviewで設定せず、modelかcontroller内で書きたいw
ということで、model内に書こうと思ってやり方をぐぐってみました。
すると「フォームのデフォルト値はcontroller内に設定したほーがーいーよ」みたいな記述があります。
そんなわけでcontrollerの方で設定してみることにしましたw

CakePHP1.x系では、controller内で$this->data[‘Koge’][‘moge’] = ‘デフォルト値’という
書き方をすれば良かったみたいですね。しかし2.x系だと$this->dataは非推奨(read only)となってしまったようです。

んではどう書くかというと

if (!empty($this->request->data)) {

    // POSTがあった際の処理

} else {

    $this->request->data[‘Koge’][‘moge’] = ‘デフォルト値’

}

てな具合で$this->request->dataに入れとくと、$this->set()を介さずとも
自動的に設定した値が初期値としてFormヘルパーで作成したフォームに入ってくれました。
$this->request->dataってREQUESTされた値の処理とかにしか使わないのかと思ってたら
こーいう使い方もするんですねw
(もちろんこれが正しいかどうかは初心者の自分には判別がつきませんw)

てなかんじでどっとおはらいw
 
 

WEB+DB PRESS 総集編〔Vol.1~72〕 (WEB+DB PRESS plus)
伊藤 直也 外村 和仁 長野 雅広 松信 嘉範 渡辺 修司
技術評論社
売り上げランキング: 108

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です