CakePHP ポケットリファレンス
CakePHP ポケットリファレンスを購入した。
http://gihyo.jp/book/2008/978-4-7741-3503-8
開発版なので当たり前なのだが、CakePHP 1.2 は内容がどんどん変わっている様だ。
ポケットリファレンスは、 CakePHP 1.2.0.6311-beta を参照している。
CakePHPの月選択のタグを表示する
FormHelper::month() を利用するのだが、CakePHP 1.2.0.7125 RC1では、英語表記にするかどうかを "monthNames" オプションで指定できる。
<?php echo $form->month('User.birthday', 'now', array('monthNames' => false)) ?>
で、数字表記に変更。・・・もしくは、/cake/libs/view/helper/form.php の
<?php // (中略) $defaults = array('monthNames' => true);
を false にすると、毎回指定しなくても良さそう。デフォルト値を外部から設定する方法はないみたい。
CakePHP 1.2 のデフォルトのレイアウト
/cake/libs/view/layouts/default.ctp が用意されているので、これを
/app/view/layouts 以下にコピーして利用する。
CakePHP で複数チェックボックス
ビューで以下の様にすると面白いことになった。
<?php echo $form->checkbox('User.sex.1')?>男性 <?php echo $form->checkbox('User.sex.2')?>女性
コントローラーでは、$this->data['User']['sex'] が配列になる。var_dump($this->data['User']['sex'] をとると、
array(2) { [1]=> string(1) "0" [2]=> string(1) "1" }
ただし、そのまま $this->User->save() を実行すると悲しい結果になってしまう。モデル側(もしくはコントローラ)でこの状態をカバーする必要がある。ビヘイビアとかいう機能が使えそう。