昨年の暮れから今年の初めにかけて勉強していたPHPも,仕事で他の言語でのプログラミングが続くと,手つかずになってしまっていました。今回,ある案件をむりやりPHPで開発することとして,CakePHPの勉強を再開しました。勉強をサボっている間にCakePHPの1.2がBetaからRCになっていましたので,もうこれからは1.2かと重い,1.2で勉強をすることにしました。参考書は右にならんでいる三冊の本。1.2については「徹底入門」や「ポケットリファレンス」が役立ちます。しかし1.2もどんどん細かな仕様が変わっているようですので,これらの書籍の記述通りでない部分も多くあり,結構ハマりました。
日付入力フォームの月表示
フォームで日付入力をする場合に
$form->dateTime('date');
とか,
$form->input('date'); // dateが日付項目の場合
を使いますが,月のコンボボックスがJuryなどと英字表記されてしまいます。これを数字表記に変更する対応策が,「徹底入門」にも「ポケットリファレンス」にも載っています。いずれも違う方法ですが,ウラワザ的なやり方をする必要があるように書かれています。RC3では,オプションにmonthNamesというのがあり,それをfalseにしてやると月の選択肢は数字になります。
echo $form->input('start_date', array('dateFormat'=>'YMD', 'timeFormat'=>24,'monthNames'=>false));
このようにするだけです。ちなみに「ポケットリファレンス」のFormHelperのところには,inputメソッドの記述がありません。ですがbakeの生成コードを見ていると基本的にはこれを使うのが1.2流な感じがします。その点「徹底入門」ではしっかりと解説されています。
Vendor()関数
どちらの本にもVendor関数を使って,Vendorsディレクトリのライブラリを読み込むと書いていますが,RC3ではこれは通用しないみたいです。App::importを使用するように変更になったようです。