2012-07-03 6 views
6

Küçük bir sorunum var, denetleyicim, AbstractActionController'ı genişletiyor ve herhangi bir eylemden önce bazı işlevleri çağırmam gerekiyor, örneğin indexAction sanırım preDispatch() herhangi bir eylemden önce çağırıyor ama bu kodu $ olarak denediğimde Bu-> görünüm-> test hiçbir şeydir.preDispatch çalışmıyor

class TaskController extends AbstractActionController 
{ 
private $view; 

public function preDispatch() 
{ 
    $this->view->test = "test"; 
} 

public function __construct() 
{ 
    $this->view = new ViewModel(); 
} 

public function indexAction() 
{ 
    return $this->view; 
} 
} 

cevap

7

iyi olur modül sınıfına bunu ve bunun gibi mvc olay işleyicisi Eventmanager kullanmak:

class Module 
{ 
    public function onBootstrap($e) 
    { 
    $eventManager = $e->getApplication()->getEventManager(); 
    $eventManager->attach(\Zend\Mvc\MvcEvent::EVENT_DISPATCH, array($this, 'preDispatch'), 100); 
    } 

    public function preDispatch() 
    { 
    //do something 
    } 
} 
2

Ve bir çizgide:

public function onBootstrap(Event $e) 
{ 
    $e->getTarget()->getEventManager()->attach('dispatch', array($this, 'someFunction'), 100); 
} 

The son numara ağırlıktır. Eksi eşit sonrası olay olarak.

şu olay önceden yapılandırılmış şunlardır:

const EVENT_BOOTSTRAP  = 'bootstrap'; 
const EVENT_DISPATCH  = 'dispatch'; 
const EVENT_DISPATCH_ERROR = 'dispatch.error'; 
const EVENT_FINISH   = 'finish'; 
const EVENT_RENDER   = 'render'; 
const EVENT_ROUTE   = 'route'; 
13

ben tanımlanan onDispatch yöntemi kullanmak Bunu yapmak istediğinizde: Ayrıca

class TaskController extends AbstractActionController 
{ 
    private $view; 

    public function onDispatch(\Zend\Mvc\MvcEvent $e) 
    { 
    $this->view->test = "test"; 

    return parent::onDispatch($e); 
    } 

    public function __construct() 
    { 
    $this->view = new ViewModel(); 
    } 

    public function indexAction() 
    { 
    return $this->view; 
    } 
} 

ek bilgi için http://mwop.net/blog/2012-07-30-the-new-init.html de bakabilirsiniz ZF2'deki gönderim olayıyla nasıl çalışılacağı hakkında.

+1

teşekkürler şeytan bunu google'da buldu, gönderimi üstlenmeyi aramayı unuttum ... – Ismael