24
27

More than 5 years have passed since last update.

CakePHP3.0 → 3.1アップグレードで対応すべき点

Posted at

CakePHP3.1.0がリリースされましたが、3.0.xからアップグレードすると、少し手を入れないといけなかったので、対応点を書いておきます。(たぶん他にもあると思いますが、私がやったものだけ。)

詳細は3.1 Migration Guideを見てください。

layoutの変更はviewBuilder()を使う

3.0では

$this->layout = 'admin';

とやってlayoutを変更していましたが、3.1では

$this->viewBuilder()->layout('admin');

と書くようになりました。

helperのloadもviewBuilder()を使う

ControllerのbeforeRenderでヘルパーをloadする場合、3.0では

$this->getView()->loadHelper('MyHelper');

としていましたが、3.1では

$this->viewBuilder()->helpers(['MyHelper']);

と書きます。

Emailのnamespaceが変わった

3.0では

use Cake\Network\Email\Email;

でしたが、3.1では

use Cake\Mailer\Email;

になりました。

あと、TestCaseで

$this->getMock('Cake\Network\Email\Email');

と書いていたのですが、methodも指定しないとclassName()とかがcallできなくてエラーになってしまうので、

$this->getMock('Cake\Mailer\Email', ['send']);

のようにmethodを指定するようにしました。(元々そうすべきだったかも。)

Flashメッセージがstackになった

今まで書いてたものは特に変えなくて大丈夫だと思いますが、セッションの構造が変わった(配列になった)ので、TestCaseで

$this->assertSession(__('更新できませんでした'), 'Flash.flash.message');

と書いてたのを

$this->assertSession(__('更新できませんでした'), 'Flash.flash.0.message');

にしました。

24
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
27