2011-04-04 14 views
6

के भीतर से नियंत्रक के रीडायरेक्ट() को कैसे कॉल करें I एक्शन हेल्पर की प्रीडिस्चैच विधि में एसीएल चेक कर रहा हूं। जब यह विफल हो जाता है, तो मैं एक्शन कंट्रोलर की _redirect विधि को कॉल करना चाहता हूं हालांकि मुझे ऐसा करने में कठिनाई हो रही है।ज़ेंड फ्रेमवर्क - एक एक्शन हेल्पर

इस पोस्ट से जुड़ी टिप्पणियों में, zend-framework, call an action helper from within another action helper, मुझे दो समाधान दिखाई देते हैं। सबसे पहले, नियंत्रक को $ - - _ actionController के रूप में सहायक से एक्सेस किया जाता है। दूसरे में, इसे $-> getActionController() प्राप्त करने के लिए उपयोग किया जाता है।

मैं निम्न में से दोनों की कोशिश की:

$this->_actionController->_redirect('/'); 
$this->getActionController()->_redirect('/'); 

या तो मामले मैं में 'विधि "_redirect" मौजूद नहीं है ...'। क्या ऐसे प्रतिबंध हैं जिन पर कार्रवाई सहायक से नियंत्रक विधियों तक पहुंचा जा सकता है?

उत्तर

14

वहाँ Redirector action helper है आप अपनी कार्रवाई सहायकों में इस्तेमाल कर सकते हैं कि। उदाहरण के लिए:

class My_Controller_Action_Helper_Test extends Zend_Controller_Action_Helper_Abstract { 

    public function preDispatch() { 
     $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector');   
     $redirector->gotoUrl('/url'); 
    }    
} 

नियंत्रक _redirect method पुनर्निर्देशक के gotoUrl विधि करने के लिए सिर्फ एक आवरण है।

0

उदाहरण कैसे preDispatch() में यह करने के लिए:

$request = $this->getActionController()->getRequest(); 
$urlOptions = array('controller' => 'auth', 
        'action' => 'login'); 
$redirector = new Zend_Controller_Action_Helper_Redirector(); 
$redirector->gotoRouteAndExit($urlOptions, null, true); 
0

का उपयोग नहीं क्यों:

$this->_response->setRedirect('/login'); 
$this->_response->sendResponse(); 

या:

$this->_request->setModuleName('default'); 
$this->_request->setControllerName('error'); 
$this->_request->setActionName('404'); 
संबंधित मुद्दे