完了や削除、編集、保存などの処理のあとに、重複処理を避けるために
リダイレクトをするのはよくある処理のひとつです。
そこでリダイレクト先の処理完了画面へ、
「◯◯の処理が完了しました」などといったメッセージを送ります。
前の画面からリダイレクト先へ値を渡さないと、
リダイレクト先からは、何が処理されてきたのかわからないためです。
そこで一般的にはセッションの利用を思いつくかと思いますが、
ZendFrameworkには、その処理を簡単に行えるように
「flashMessenger」という便利なプラグインが用意されています。
〜方法〜
Controller内のActionで
class FreeController extends W_Controller_Action_Admin
{
public function pendingAction()
{
〜〜〜〜
(省略)
〜〜〜〜
\$message = $this->_helper->getHelper('FlashMessenger');
// フラッシュマネージャへ受け渡すメッセージを追加する
\$message->addMessage('URLの掲載依頼を保留しました');
// リダイレクトする
\$this->_redirect(/free_edit/preview);
}
}
処理後に実行するAction
class Free_EditController extends W_Controller_Action
{
public function preDispatch()
{
parent::preDispatch();
// ここで $_SESSION をダンプするとセッションにどのように保持されているかを確認できる
var_dump($_SESSION);
$message = $this->_helper->getHelper('FlashMessenger');
$this->view->messages = $message->getMessages();
}
}
VIEW側のファイルで
<?= \$this->message('action', $this->messages) ?>