LoginSignup
2
2

More than 5 years have passed since last update.

ZendFrameworkのflashMessengerでリダイレクト先に完了メッセージを渡す方法

Last updated at Posted at 2015-10-01

完了や削除、編集、保存などの処理のあとに、重複処理を避けるために
リダイレクトをするのはよくある処理のひとつです。

そこでリダイレクト先の処理完了画面へ、
「◯◯の処理が完了しました」などといったメッセージを送ります。

前の画面からリダイレクト先へ値を渡さないと、
リダイレクト先からは、何が処理されてきたのかわからないためです。

そこで一般的にはセッションの利用を思いつくかと思いますが、
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) ?>

2
2
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
2
2