CakePHP1.2にバージョンアップ

初心者がCakePHPの勉強を始める件、時間が空いてしまいましたがCakePHPガイドブックを6章(コントローラー)、7章(モデル)、8章(ヘルパー)と進めています。
書籍の実装例をなぞっているだけですが、一通りの流れを把握し書籍サンプルであるブックマークプログラムが完成しました。
そんな中、CakePHP1.2のバージョンがあがってきたので、1.1からアップデートすることにしました。
(あわせてUSBメモリでの開発はあまりにも重くなったので、限界を感じ素直にPCローカルに再インストール)

●CakePHP1.2の導入

appフォルダはそのままに、Cakeフォルダを入れ替えます。
Cookbook :: 1.2 Collection :: マニュアル :: CakePHPによる開発 :: インストールの準備

●CakePHP1.2の設定

・Security.saltの設定
ハッシュ値を適当に変更しろとのこと。
おいしいCakePHP! エッセンスはFlash/Flex Security.saltの設定
・DB設定
app/config/database.php.defaultをいじる。
おいしいCakePHP! エッセンスはFlash/Flex データベースの設定
1.1では問題なかった文字コードでなぜかはまる。
注意点
・app/config/database.php→’encoding’=>’utf8′
・phpでのSET NAMESは不要
・app/views/layouts/default.ctp→charset=UTF-8
・MySQLはutf8_unicode_ci
インストールが正常に完了するとこんな画面が表示されます。
システムオールグリーン
cakephp1.2.png

●CakePHP1.1からの変更点

参考にしているCakePHPガイドブックはCakePHP1.1準拠のため、色々と異なる部分があります。
・テンプレート拡張子がthtmlからctpになった。
・bake.phpからBakeコマンドになった。
・入力エラーメッセージの表示方法が変わった。
CakePHP1.1の場合
<?php echo $html->tagErrorMsg("User/login","メールまたはパスワードが違います");?>
CakePHP1.2の場合
<?php echo $form->error('User/login');?>
エラーメッセージはモデルのバリデーションmessageで設定する。
エラーメッセージを直接指定する場合
<?php echo $form->error('User/login','メールまたはパスワードが違います');?>
・selectの作り方
CakePHP1.1の場合
<?php echo $html->selectTag("Bookmark/User_id",$user_list,$user_id,array("multiple"=>"multiple"),null,false);
?>

CakePHP1.2の場合
<?php echo $form->select("Bookmark/User_id",$user_list,$user_id,array("multiple"=>"multiple"),null,false);
?>

書式
$form->select(DBフィールド,表示配列,selected,array("multiple"=>"multiple"),null,false);
・はまった1
modelのvalidateが大きく変更になった。
CakePHP1.1の場合
var $validate=array(
'user_id'=>VALID_NOT_EMPTY,
'url'=>'/^http:\/\/|^https:\/\//',
'count'=>VALID_NUMBER
);

CakePHP1.2の場合
var $validate=array(
'user_id'=>array(
'rule'=>VALID_NOT_EMPTY,
),
'url' => array(
'rule' => array('url'),
'allowEmpty' => false, //空の値を許すかどうか
'message' => 'エラー時にhelperが出すメッセージ',
),
'count' => array(
'rule' => array('numeric'),
)
);

・はまった2
検索でfind()の比較演算子を使う箇所がセキュリティ対策で変更になった。
これは超はまった
1.1:$cond['url']="LIKE %".$this->params['form']['url']."%
1.2:$cond['url LIKE']="%".$this->params['form']['url']."%";
1.1:$cond['count']=">=".$this->params['form']['count'];
1.2:$cond['count >=']=$this->params['form']['count'];

配列のkeyの方に比較演算子を書くようになっている。

余談

実は上記の内容は7月上旬に書き溜めていたもの。
ここで仕事が急に忙しくなり、また夏期休暇の旅行などで学習時間が確保できないまま2ヶ月あいてしまいました。
9月に入ってようやく勉強を再開しようとしたところ、ソースコードが全く読めない!!!!!
1ヶ月前は他人を身に染みて感じています。
さて、どうするか・・・。
もう一度、他のチュートリアルをやり直すか・・・。
CakePHP guide  » CakePHP で作る Web システム

コメント

タイトルとURLをコピーしました