5

ZF2 のフラッシュ メッセンジャーで奇妙な問題が発生しています。私は非常に単純なシナリオでそれを使用しています.登録後に「登録完了」メッセージを保存し、ログインページにリダイレクトしてメッセージを表示しますが、フラッシュメッセンジャーからメッセージが返されることはありません.

コントローラー登録アクション:

$this->flashMessenger()->addMessage('Registration complete');
return $this->redirect()->toRoute('default', array('controller' => 'user', 'action' => 'login'));

コントローラーのログイン アクション:

$flashMessenger = $this->flashMessenger();
$mes = $flashMessenger->hasMessages();
$cur = $flashMessenger->hasCurrentMessages();

$mes と $cur はどちらも false です (念のため両方を試しました)。誰でもこれに光を当てることができますか?

ZF 2.2.2 と PHP 5.3.14 を使用しています。セッション保存ハンドラーは dbtable アダプターを使用しています。これを無効にして、同じ dbtable 保存ハンドラーを使用するように flashmessenger セッション マネージャーを設定しようとしましたが、結果はありませんでした。

4

5 に答える 5

7

コントローラー プラグインを使用するには、FlashMessengerコントローラーに以下を追加する必要があります。

<?php 
class IndexController extends AbstractActionController {

  public function indexAction() {

    $this->flashMessenger()->addMessage('Your message');

    return $this->redirect()->toRoute('admin/default', array('controller'=>'index', 'action'=>'thankyou'));
  }

  public function thankyouAction() {

    return new ViewModel();
  }

}

thankyou.phtml以下をビュー テンプレートに追加します。

<?php 

if ($this->flashMessenger()->hasMessages()) {

    echo '<div class="alert alert-info">';

    $messages = $this->flashMessenger()->getMessages();
    foreach($messages as $message) {
        echo $message;
    }

    echo '</div>';
}

?>
于 2014-02-05T02:32:47.637 に答える
3

あなたのコードはあるべき姿のようです。ワークフローには何かトリッキーなものがあるはずです。

この場合、古い方法でデバッグできvar_dump($_SESSION)ます。flashMessenger によってデータが取り込まれているかどうかを確認してください。

于 2014-02-06T15:37:10.170 に答える
2

使用する

echo $this->flashMessenger()->renderCurrent(...

それ以外の

echo $this->flashMessenger()->render(...
于 2014-07-18T16:03:45.020 に答える
-1

FlashMessenger は ZF2 の公式ビュー ヘルパーになり、すべてのビュー / レイアウトに簡単に統合できます: FlashMessenger ヘルパー — Zend Framework 2 2.3.1 ドキュメント - Zend Framework

TwitterBootstrap3 でも動作し、module.config.php には別の構成があります。

于 2014-04-24T12:39:32.650 に答える