ひとりまとめ

もろもろのメモ

CakePHP Viewで受け取る値

CakePHPのチュートリアルを一通りやりおわったあと、「なるほど簡単だなー。では早速・・・あれ?」と穴に落ちてしまいました。なのでそれを1つずつ埋めていってみます。(果たして埋められるのか!?)


今回は、Viewが受け取る値がわからない という話。チュートリアルではこちら。
投稿記事の編集

ここでは、登録済みのデータをDBから取得してViewで表示→登録 ということをしています。ちなみにここまでに出てきてる「記事の追加」では、Viewに渡すために
 $this->set('post', $this->Post->read());
のようにして「取ってきた値 $this->Post->read()」を「postという名前」でViewに渡すというやり方をしてました。
しかし、このページでは
 $this->data = $this->Post->read();
とすることで、いきなりViewに渡せてしまうみたいです。お手軽!でもそのかわりに、なんていう値で受け取れるのかがわからなくなってしまいました。


どうやら
 $this->data
で受け取れるようです。例えばこのようにすると、Viewで値が表示できました。
 $this->data['Book']['name'] Bookテーブルのnameフィールドの場合


FormHelperを使うと
 echo $form->input('name',array('label'=>'名前'));
のようにしてすぐに使えるのですが、自前のフォームを作ろうとして悩んでしまいました。


ちなみにこの場合、次のような書き方にすることで、チュートリアルのような方法($this->Book->save($this->data['Book']))で保存することができました。
 <input type="text" name="data[Book][name]" value="data['Book']['name'] ?>">
※表示の都合上、最初と最後のカッコが全角になってます
nameのところがミソらしく、data[テーブル名][フィールド名]とすると、コントローラーで受け取った後に該当するフィールドに書き込んでくれるようです。


なかなか見つけきれず、試行錯誤してしまいました〜。