[学習 cakePHP #11] cakePHPをVer.1.1系から1.2.0.7296 RC2へアップした。
cakePHPは今まではStable Versionの1.1.19.6305を使ってました。6月末にNew Versionである1.2のRC2版が出ましたので1.2.0.7296 RC2へとアップしてみました。#00~#10で作成していたGuest Bookを1.2で動くようにしたときの変更点を書いてみます。
はじめにViewテンプレート拡張子が .thtmlから .cptへと変更になりました。HTMLヘルパにも変更があり。Viewのフォーム部分のHTMLヘルパが変更になっていました。
Ver. 1.1.19の時には↓のように書いてました。
<form method="post" action="<?php echo $html->url("/boards/post") ?>">
<dl>
<dt>タイトル</dt>
<dd><?php echo $html->input("Board/title", array("size" => "35")) ?></dd>
<dt>名前</dt>
<dd><?php echo $html->input("Board/name", array("size" => "35")) ?></dd>
<dt>コメント</dt>
<dd><?php echo $html->textarea("Board/body", array("rows" => "5", "cols" => "35")) ?></dd>
<dt>パスワード</dt>
<dd><?php echo $html->password("Board/pwd", array("size" => "8")); ?></dd>
</dl>
<p id="button"><?php echo $html->hidden("Board/id") ?>
<?php echo $html->submit("投稿", array("class" => "sb")) ?></p>
</form>
これがVer. 1.2 RC2でこうなりました。
<form method="post" action="<?php echo $html->url("/boards/post") ?>">
<dl>
<dt>タイトル</dt>
<dd><?php echo $form->text("Board/title", array("size" => "35")) ?></dd>
<dt>名前</dt>
<dd><?php echo $form->text("Board/name", array("size" => "35")) ?></dd>
<dt>コメント</dt>
<dd><?php echo $form->textarea("Board/body", array("rows" => "5", "cols" => "35")) ?></dd>
<dt>パスワード</dt>
<dd><?php echo $form->password("Board/pwd", array("size" => "8")); ?></dd>
</dl>
<p id="button"><?php echo $form->hidden("Board/id") ."\n" ?>
<?php echo $form->button("投稿", array("class" => "sb", "type" => "submit")) ?></p>
</form>
いままではフォーム部品の作成に $html->input などとしてたんだけどHTMLヘルパではなくてFORMヘルパになり $form->text などとしてフォーム部品を作るようになった。
Viewの $htmo->tagErrorMsgも
if ($err_flag == "1") {
echo $html->tagErrorMsg("Board/" . $err_field, "ERROR :: " . $err_msg);
}
と書いていたんだけど
if ($err_chk["flag"] == true) {
echo $form->error("Board/" . $err_chk["field"], "ERROR :: " . $err_chk["msg"]);
}
へと書き直し変更しました。あとまだ深く調べてはいないんですけど 1.1.19使用時には
コントローラ部
if ($this->Board->validates($this->data)) {
処理
}
モデル部
var $validate = array(
"body" => VALID_NOT_EMPTY
);
こんな感じでBodyのValidateチェックをしてから処理をしてたんですけど、1.2 RC2ではなぜか上手く動きませんでした...。これが
$this->Board->save($this->data)
のときに行われるValidateチェックでは上手く動くんですけどねぇ。validates関数の処理が変わってるのかな?
とりあえずこの箇所などを修正したら、うちで試しに作っていたGuestBookは上手く動くようになりました。一応まだまだcakePHP&PHP初心者を抜けられてはいませんが、cakePHP 1.2RC2にて作成したGuestBookのコードをzip(cakephp-sample.zip)にして置いておきます。取りあえず、Controler、Model、Viewのファイルだけです。最低限のことしか実装していないですが...。RSSやSPAM対策も実装してみたかったんですが、まだなのでコレは次回の宿題にしたいです。

コメント