2009-03-07 6 views
1

J'utilise plusieurs segments de réponse que je pousse sur ma pile d'action comme ceci:Comment puis-je obtenir tous les segments de réponse dans Zend Framework?

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

Maintenant, quand je test pour l'action en cours, à mon avis:

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

Je reçois le nom de une action (aléatoire?) mais je veux en tester une autre.

Comment est-ce que je peux tester si une certaine action fait partie des actions sur la pile par opposition à juste obtenir le dernier sur la pile?

+0

Il est un maniaque. –

+0

Et il se comporte très irrespectueux et impoli! C'est trop maintenant ... – markus

+0

Les éditions de Rich étaient valides. Si vous avez des raisons pour lesquelles ils ne sont pas logiques, postez-les. Sinon, ne le prenez pas personnellement, il édite des centaines de messages par jour. –

Répondre

2

La requête retournée de Zend_Controller_Front::getRequest() n'est certainement pas aléatoire mais la requête que le répartiteur est en train de traiter, ie. la requête qui a provoqué l'appel de la méthode d'action de votre contrôleur d'action et donc l'exécution de votre script de vue. En utilisant le plugin de pile d'action, vous ajoutez juste plus de demandes à traiter une par une par le répartiteur.

Si vous souhaitez obtenir toutes les demandes qui sont sur la pile d'action, vous devez interroger la pile d'action plugin directement: « STOP! ÉDITER MON POTEAUX RICH B »

<?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(); 
} 
?> 
Questions connexes