CakePHP1.2から1.3への変更作業
公開日: :
最終更新日:2014/04/20 CakePHP
思ったよりも面倒なので、誰かの役に立てば貰えばうれしい限り。
[公式移行ガイド]
404 Not Found
基本的には、上記のサイトを見れば変更すべき箇所が分かります。
ちなみに私がその中で、対応したのは(主に)以下のこと。
- バリデーションルールの変更
- セッションコンポーネントの明示的読み込み
- pageTitleの変更
- find周りの変更
- $form->selectの書き方の修正
以下に順に説明します。
バリデーションルールの変更
1.3では、バリデーションルールが変わって以下が利用できなくなりました。
- VALID_NOT_EMPTY
- VALID_EMAIL
- VALID_NUMBER
- VALID_YEAR
app/config/bootstrap.phpに定義すれば、そのまま使えるようですが、将来的なことを考えれば新しいバリデーションルールにするのが良いです。
新しいバリデーションルールは以下。
上記を参考にしながら、以下のように変更。
- VALID_EMAIL -> email
- VALID_NOT_EMPTY -> notEmpty
セッションコンポーネントの明示的読み込み
ここが何気に盲点だったんだけども、セッションコンポーネントは1.2では明示的に読み込む必要が無かったのだけど、今回(1.3)は書かないと駄目な模様。
- var $components = array(‘Session’);
上記を追加。
pageTitleの変更
View::$pageTitleは削除されました。代わりに$this->set(‘title_for_layout’, $var);を使用してください。
[公式より引用]
今までは、Viewで以下のように書いてたのだけど、
- $this->pageTitle = IndexPageTitle
- ※IndexPageTitleは、設定ファイルで宣言してます。
1.3からは以下のように変更。
- $this->set(‘title_for_layout’, IndexPageTitle)
View側でページタイトルを決めるんだとしたら、$this->se()より$this->pageTitleのほうが分かりやすかった。
find周りの変更
ほんと、色々と削除されてしまっていますが・・。
Model::findAll、findCount,、findNeighbours は削除されました。
[公式より引用]
モデルでよく使うfindですが、以下のような作りになっています。
- find($type, $params)
以前は、以下のように書いて動作してましたが、1.3では動作しません。
- findAll($conditions, $fields, $order, $limit, $page, $recursive)
これを単純に以下のように書き換えても動作しません。
- find(‘all’, $conditions, $fields, $order, $limit, $page, $recursive)
なので、1.3では以下のように修正。
$params = array(
‘conditions’ => $conditions,
‘recursive’ => $recursive,
‘fields’ => $fields,
‘order’ => $order,
‘limit’ => $limit,
‘page’ => $page,
)
find(‘all’, $params);
$this->selectの書き方の修正
これは、公式に載っていなかったと思うのだけど1.3にしたら動作しなくなったので自ら修正した箇所。
今まで、以下のように記述。
- $form->select(“Task.priority”, $priority, null, array(), array(), false, false);
- $priority = array(0 => ‘低’, 1 => ‘中’, 2 => ‘高’);
こうすると、デフォルトとして$priorityの0の値が表示されていたのだけど1.3では表示されずに、空が表示されるように。
なので以下のように変更。
- $form->select(“Task.priority”, $priority, $selected, array(“empty” => false))
$selectedに表示したい値のkeyを入れておけばOK。
参考ページ一覧
今回お世話になったページ。
広告
関連記事
-
CAPTCHAの導入方法 -KCAPTCHAの導入-
CakePHP(1.2、1.3)にKCAPTCHAを導入してみたのでメモ。 * CAPTCHA
-
CakePHP2系でTwigを利用 -書き方のメモ-
CakePHP2系でTwigをどのように記述するかのメモ。 数パターンしか載せてないですが、だいた
-
order byでハマったこと -order by、group byの処理順序-
CakePHPでorder byとgroup byを使っていてはまったことについてのメモ。 *
-
Twitterでサービスにログイン -PHP(CakePHP1.3)で実践編-
以前、ソーシャルログインについて書きました。 ただ、Twitter連携にまだ触れてない人にはちょ
-
CakePHP1.3でテストコード(3) -ENUM型が使えない-
cakePHP1.3でのSimpleTestを使ったテストケースの第3回目。 今回は、テーブル構成で
-
CakePHP1.3でテストコード(1) -モデルのテスト-
CakePHP1.3ではSimpleTestを用いてテストコードを書きます。 ※CakePHP2系で
-
CakePHP1.3でテストコード(2) -フィクスチャをいじってみる(テストデータの動的登録)-
cakePHP1.3でのSimpleTestを使ったテストケースの第2回目。 今回は、動的にテストデ
-
定期的にデータ取得のためにCakePHP1.3でシェル機能を利用
定期的にデータを取得する行為をするために、はじめてシェル機能を使ってみたのでメモ。 * ス
-
CakePHP2系にTwigを導入
CakePHP2系でも慣れているSmartyを使おうと思ったものの、良いプラグインが見つからず断念。
-
CakePHPのモデルのキャッシュではまった -新しく追加したカラムに値が入らない-
タイトルのとおり、ちょこっとCakePHPではまったのでメモ。 * 作業内容 -MySQLで、ある