1

我有以下設置:如何在Zend Framework過程中調用其他控制器並檢索其呈現的視圖?

無盡運行的PHP進程,查看包含模塊名稱,控制器名稱,操作名稱和參數數組的作業隊列。

對於每一份工作,我想調用給定的控制器操作並檢索呈現的視圖以供進一步處理。

我正在考慮爲每個工作引導一個Zend_Application的實例,但並不完全確定如何處理其餘部分。也許還有更好的方法。

所以我的問題是:

我如何調用Zend框架內處理其他控制器和檢索其渲染的看法?

感謝大家提前!

回答

2

我想服用Front_Controller和調度新的請求,將是最好的事情。

這樣的事情,從你的控制器(不工作密碼):

$frontController = $this->getFrontController(); 

    $newRequest = new Zend_Controller_Request_Http(); 
    $newRequest->setActionName('newAction'); 
    $newRequest->setControllerName('newController'); 

    $response = new Zend_Controller_Response_Http(); 

    $frontController->dispatch($newRequest, $response); 

它可能不是這種簡單的事,但想想...

+0

它的工作原理:$ request = new Zend_Controller_Request_Http(); ('Zend_Controller_Router_Route) - > setParam('setActionName('testAction' noViewRenderer',true); ...謝謝! :-) – favo 2010-10-13 17:54:48

0
$this->_forward('otherAction', 'otherControllerOrNull'); 

http://framework.zend.com/manual/en/zend.controller.dispatcher.html

你可以閱讀這個線程:Calling member function of other controller in zend framework?

+1

但是,這會將現有請求轉發給指定的控制器/操作,對吧?聽起來像OP想要捕獲來自該控制器/動作的輸出以用於* current *請求。 – 2010-10-03 16:17:06

+0

這就是大衛,我想保持當前進程運行,只是與其他控制器產生的任何輸出一起工作。 _forward不會允許這樣做。 – favo 2010-10-03 16:34:18

+0

你有沒有找到這個favo的解決方案? – azz0r 2012-10-08 09:36:48

0

你能不能用一個Action View Helper?如果你想在你的控制器輸出,那麼你可以簡單地使用$this->view->action('someAction', 'someController');或ActionStack助手。

無論哪種情況,請注意性能影響。有關更多詳細信息,請參閱Why the Zend Framework Actionstack is Evil

相關問題