2009-07-12 10 views
21

मैं एक एक्शन हेल्पर लिख रहा हूं और मुझे उस सहायक के भीतर से एक और एक्शन हेल्पर कॉल करने की आवश्यकता है। लेकिन मुझे नहीं पता कि कैसे। नमूना कोड में यहाँ:ज़ेंड-फ्रेमवर्क, किसी अन्य एक्शन सहायक के भीतर से एक एक्शन हेल्पर को कॉल करें

class Common_Controller_Action_Helper_SAMPLE extends Zend_Controller_Action_Helper_Abstract 
{ 
    protected $_view; 
    public function __construct(Zend_View_Interface $view = null, array $options = array()) 
    { 
     $this->_view = $view; 
    } 

    public function preDispatch() 
    { 
     $flashMessenger = $this->_helper->FlashMessenger; // IT IS NULL 
    } 
} 

उत्तर

36

का प्रयोग करें action helper broker:

$flashMessenger = 
    Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); 
+0

यह बहुत अच्छा काम किया। :) –

0

तुम भी getActionController का उपयोग एक संदर्भ वापस actioncontroller आप किसी भी तरीकों आप सामान्य रूप से वहाँ का उपयोग करेंगे के लिए इस्तेमाल कर रहे थे करने के लिए कर सकते हैं।

-1

आप इस तरह से यह कॉल कर सकते हैं:

$this->_actionController->OtherActionHelper(); 

_actionController संपत्ति का संदर्भ वास्तविक कार्रवाई नियंत्रक।

+3

इस उत्तर का उपयोग करने का प्रयास करते समय, मुझे अपने नियंत्रक पर एक 'अपरिभाषित संपत्ति' मिली। स्वीकार्य उत्तर हालांकि मेरे लिए काम करता था। – ANisus

11

एक अन्य समाधान है:

$flashMessenger = $this->getActionController()->getHelper('FlashMessenger'); 
+0

यह विधि वास्तव में बेहतर काम करती है क्योंकि 'getStaticHelper' के साथ, फिर सहायक' रिटर्न 'में' getActionController' 'null' –

0

मर्केटर का जवाब देने के लिए इसके अलावा, आपके विधि के बाद जोड़ने के लिए, नीचे दिए गए उदाहरण देखें:

Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->myMethod(); 
संबंधित मुद्दे