2009-03-07 10 views
1

私はこのように私のアクションスタックにプッシュし、いくつかの応答セグメントを使用しています:私は私の見解では、現在のアクションのためにテストするときZend Frameworkですべてのレスポンスセグメントを取得するにはどうすればよいですか?

$userlogAction = clone($request); 
$userlogAction->setActionName('userlog')->setControllerName('index'); 
$actionStack->pushStack($userlogAction); 

は今:

$request = Zend_Controller_Front::getInstance()->getRequest(); 
$action = $request->getActionName(); 

私はの名前を取得1つの(ランダム?)アクションが、私は別のものをテストしたい。

スタック上の最後のアクションを取得するのではなく、特定のアクションがスタック上のアクションの中にあるかどうかをテストするにはどうすればよいですか?

+0

「MY POSTS RICH Bを編集STOP!」彼はマニアックです。 –

+0

そして、彼は非常に無礼で無礼な行動をします!あまりにも多くのことです... – markus

+0

リッチズ編集が有効でした。彼らが論理的ではない理由がある場合は、投稿してください。そうでなければ、それを個人的に服用しないでください。彼は1日に何百もの投稿を編集します。 –

答えて

2

Zend_Controller_Front::getRequest()から返されたリクエストは確かにランダムではなく、ディスパッチャーが現在処理しているリクエストです。アクションコントローラのアクションメソッドが呼び出され、ビュースクリプトが実行される原因となったリクエストアクションスタックプラグインを使用すると、ディスパッチャによって1つずつ処理するリクエストを追加するだけです。

アクションスタック上にあるすべての要求を取得したい場合は、直接プラグインアクションスタックを照会する必要があります。

<?php 
$front = Zend_Controller_Front::getInstance(); 
$plugin = $front->getPlugin('Zend_Controller_Plugin_ActionStack'); 

if ($plugin) { 
    $stack = $plugin->getStack(); 

    foreach ($stack as $request) { 
     $action = $request->getActionName(); 
     // Do whatever you want with $action 
    } 
} else { 
    // Not using the action stack 
    $action = $front->getRequest()->getActionName(); 
} 
?> 
関連する問題