2012-07-03 29 views
6

मैं छोटी समस्या है, मैं नियंत्रक फैली AbstractActionController है, और मैं किसी भी कार्रवाई से पहले कुछ फ़ंक्शन को कॉल की जरूरत है, उदाहरण के indexAction के लिए मुझे लगता है कि preDispatch() किसी भी कार्रवाई से पहले कॉल है, लेकिन जब मैं $ में इस कोड की कोशिश यह-> देखें-> परीक्षण कुछ भी नहीं है।preDispatch काम नहीं करता है

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; 
} 
} 

उत्तर

7

बेहतर होगा कि तुम मॉड्यूल वर्ग पर ऐसा चाहते हैं, और इस तरह MVC ईवेंट हैंडलर को EventManager का उपयोग करें:

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

और एक लाइन में:

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

अंतिम संख्या वजन है। शून्य बराबर पोस्ट घटना के रूप में।

निम्नलिखित घटना पहले से कॉन्फ़िगर कर रहे हैं:

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

जब मैं इस मैं परिभाषित onDispatch विधि का उपयोग करना चाहते हैं:

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; 
    } 
} 

इसके अलावा, अतिरिक्त जानकारी के लिए http://mwop.net/blog/2012-07-30-the-new-init.html पर एक नजर है ZF2 में प्रेषण ईवेंट के साथ कैसे काम करना है इसके बारे में।

+1

धन्यवाद शैतान मैं गूगल पर इस पाया, मैं प्रेषण पर माता-पिता को बुला बारे में भूल गया ... – Ismael

संबंधित मुद्दे