flashメソッドが上手く動かない?
忙しいんだけど、暇なときにぼちぼちCakePHPのチュートリアルをやっていて、昨日完了した。一気にやれば数時間で終わるんだけど、あまり気分が乗らなかったりして1ページずつやったりしてたので。
特にハマったところとかはなかったけど、1点だけ気になったところがあったのでメモ。
ブログ記事に削除や編集を終わった後に、メッセージを表示し、その後に記事の一覧ページに戻るはずなのだが戻らない。例えば更新完了後は以下の$this->flashでメッセージを表示した後に /posts にリダイレクトされるはず。
if ($this->Post->save($this->data['Post'])) {
$this->flash('Your post has been updated.','/posts');
}
リダイレクトされずにその時に実行されたSQLとかが表示されていたので、原因はまぁリダイレクトのヘッダーを送信する前にSQLを表示しているせいなんだろうなぁと思った。
で、解決方法としてはデバッグレベルを変更するだけ。具体的にはapp/config/core.phpの以下の行を変更する。
Configure::write('debug', 2);
値を1にすると、flashメソッドの動作が「メッセージを表示し、それをクリックすると次の画面に遷移する」という感じになり、値が0の場合は通常通りメッセージが一定秒数表示され次の画面に自動的に遷移する。