🍰
リダイレクトしてフラッシュメッセージが表示されないときはbeforeFilter()を見直す
これの続きのようなものですが、処理失敗時のフラッシュメッセージのレンダリングはできても、処理成功時(つまりリダイレクトで他の画面に移るとき)の出力は失敗、という状況が続きました。
この問題の解決は簡単です。
class FoosController extends AppController
{
public $helpers = ['Html', 'Form'];
/* ここから */
public function beforeFilter()
{
parent::beforeFilter(); // ここが重要
}
/* ここまで */
public function index()
{
$this->set('data', $this->Foo->find('all'));
}
}
parent::beforeFilter()
を書いておかないと、セッションが途切れてしまいフラッシュメッセージは表示されません。
一種類のMVCで完結しているならこの問題は起きませんが、複数のコントローラーをまたぐリダイレクトの際にリダイレクト後のコントローラーにparent::beforeFilter()
が無いとこの問題が起きるようでした。
Discussion