2009-07-12 28 views
21

Tôi đang viết một người trợ giúp hành động và tôi cần gọi một người trợ giúp hành động khác từ người trợ giúp đó. nhưng tôi không biết làm thế nào. ở đây mẫu mã:zend-framework, gọi một người trợ giúp hành động từ bên trong người trợ giúp hành động khác

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

Trả lời

36

Sử dụng action helper broker:

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

nó làm việc tuyệt vời. :) –

0

Bạn cũng có thể sử dụng getActionController để có được một tài liệu tham khảo trở lại actioncontroller bạn đang sử dụng cho bất kỳ phương pháp bạn thường sử dụng ở đó.

-1

Bạn có thể gọi nó theo cách này:

$this->_actionController->OtherActionHelper(); 

Thuộc tính _actionController tham chiếu bộ điều khiển hành động thực tế.

+3

Khi cố gắng sử dụng câu trả lời này, tôi có một thuộc tính 'Chưa xác định' trên bộ điều khiển của mình. Tuy nhiên, câu trả lời được chấp nhận đã làm việc cho tôi. – ANisus

11

giải pháp khác là:

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

Phương thức này thực sự hoạt động tốt hơn vì với 'getStaticHelper', sau đó' getActionController' trong trình trợ giúp trả về 'null' –

0

Ngoài câu trả lời Mercator, thêm phương pháp của bạn sau đó, xem ví dụ dưới đây:

Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->myMethod(); 
Các vấn đề liên quan