[CakePHP]あらためてbakeは便利だと思った

BelongsToフォームが便利
モデルにBelongsToアソシエーションを設定してからコントローラ、ビューをbakeすると、
関連キーのフィールドが自動的にセレクトフォームになります。
これが異常に便利。
このためにbakeすると言っても過言ではないw
というか、コントローラで

<?php
// GroupモデルとBelongsTo関連のあるUserモデル
$this->set('groups', $this->User->Group->find('list'));
?>

としたら、ビューの

<?php
echo $form->create('User');
echo $form->input('group_id');
echo $form->end();
?>

これがセレクトフォームになるっていうのは意外と知らない人多い気がする。
自分も最初のころはアソシエーション設定する前にビューまで一気にbakeしてたので気がつきませんでした。
偶然発見した時は最初バグかと思ったw
ちなみにHasAndBelongsToManyの場合は複数選択のセレクトフォームになりますが…
こっちの使いづらさは異常…というか使えない。
ちょっとctrl押しミスったらやり直しとかorz
1.3で変更されてたらいいなぁ…

  • 追記

multipleオプションをcheckboxにするとチェックボックスになるらしい

<?php
$form->input('User', array('multiple' => 'checkbox'));
?>

これなら使えるかも。
ていうか明らかにこっちがデフォの方が良い気が。
カスタマイズでもっと便利に
スタイルシートの変更だけではどうにもならない部分はbakeで焼かれるViewを書き換えます。
9.3 Bake で焼かれるデフォルトの HTML を変更する
コントローラとモデルも変更できます。
cake/console/libs/tasks/controller.php
cake/console/libs/tasks/model.php
をそれぞれ
app/vendors/shells/tasks
にコピーして編集。
vendors/shells/tasks
でも良いです。
この場合はapp層のファイルが優先されます。
自分の場合はindexに検索フォームを付けたりとか、複数削除用のチェックボックスを付けたりとか。
大抵の場合はこれだけあれば管理ページとしては十分。
やりすぎ注意
カスタマイズし過ぎて最近はもうほとんど原型が無くなってきたのでもう一からシェル作った方が良いような気が…
欲張ってカスタマイズに時間かけすぎると何のためにbakeしてるのかわからなくなるので要注意ですw

  • 06/11 サンプルコードがおかしかったので修正しました。