Nasıl Zend Framework tüm kesimleri tepki alabilirim?

1 Cevap php

Ben bu gibi benim eylem yığını üzerinde itmek çeşitli tepki kesimleri kullanıyorum:

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

Şimdi benim görünümünde mevcut eylem için test ederken:

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

Ben bir (random?) Eylemin adını almak ama başka bir test etmek istiyorum.

Sadece yığını üzerinde son bir elde aksine belli bir eylem yığına eylemleri arasında olup olmadığını nasıl test edebilirim?

1 Cevap

Istek Zend_Controller_Front::getRequest() kesinlikle tesadüfi değildir döndü ama memuru şu anda işleniyor isteği, yani. eylem kontrolörün eylem yöntemi çağrılır ve böylece œkod yürütülecek neden isteği. Eylem yığın eklenti kullanarak, sadece dağıtıcı tarafından bir bir işlemek için daha fazla istek ekleyin.

Eğer eylem yığını üzerinde tüm isteklerini elde etmek istiyorsanız, doğrudan eklentisi eylem yığını sorgulamak zorunda:

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