とあるサイトをサーバ移転するついでに、CakePHP を 1.2 から 1.3 に移行した。正確には、1.2.6 から 1.3.9 にアップグレードしている。
フレームワークで作るほどでもない簡易なサイトだったのでほとんど問題なく移行できたが、公式のマニュアル通りの修正箇所は何点かあったのでその覚書。
インストール
コンソールで移行するプロジェクトを新たにインストール。
データベースの設定と接続の確認。
元ファイルの差し替え
下記のファイルの差分を差し替え。
/app_controller.php
/app_helper.php
/app_model.php
/config 配下の差分を差し替え
inflections.php はなくなっている。おそらく bootstrap.php にまとめればよいと思う。
不必要なファイルの読み込みをしていた inflections.php は削除され、関連した機能は柔軟性を増強するため、メソッドに書き直されています。今やカスタム inflections を読み込むためには、 Inflector::rules() を使います。
下記の配下を差し替え。
/controllers
/models
/views
/webroot (※主に /css /img /js など、変更したもの)
あとは、1.2から1.3への移行ガイド :: 付録 :: マニュアル :: 1.3コレクション を参考に修正した箇所を挙げてく。
Undefined variable: cakeDebug
$cakeDebug変数はView::renderLayoutから削除されました。エラーを避けるためこの変数の参照を削除してください。
ということなので、変数を削除する。
Use of undefined constant VALID_NOT_EMPTY
以下の定数はCakePHPから削除されました。削除された定数にアプリケーションが依存しているなら、app/config/bootstrap.phpにこれらの定数を定義してください。
以下の定数の中に VALID_NOT_EMPTY が含まれていたので 「VALID_NOT_EMPTY」を 「notEmpty」に置換する
ちなみに 「VALID_EMAIL」 は 「mail」 に変更になったらしい。
コンポーネント
SessionコンポーネントとSessionヘルパーは自動的に読み込まれなくなりました。
Session コンポーネントを使っているコントローラに、コンポーネントとヘルパーを読み込ませる。
ビュー
ビュー関連は主に下記の内容に引っかかった。
- View::renderElementは削除されました。 代わりにView::element()を使用してください。
- View::set(‘title’, $var)をしてもレイアウト中で、 $title_for_layoutにセットされなくなりました。$title_for_layoutはデフォルトのままです。もしカスタマイズしたいなら、$this->set(‘title_for_layout’, $var)を使用してください。
- View::$pageTitleは削除されました。代わりに$this->set(‘title_for_layout’, $var);を使用してください。
モデル
モデル関連は主に下記の内容に引っかかった。
- Model::del()とModel::remove()は非推奨となっており、Model::delete()が正規の削除メソッドです。
- Model::findAll、findCount,、findNeighbours は削除されました。
ヘルパー
TextHelper::trim()は非推奨となりました。代わりに truncate()を使用してください。
今回は関係なかったけど、過去にどこかで使ったことがあるような気がする。もしくは、この関数を知らずに似たような機能を自分で作ったのだったかもしれない。
トラックバック一覧
この記事にはトラックバックがついていません。