Php 如何调用Zend Framework进程中的其他控制器并检索其渲染视图?
我有以下设置: 一个无休止地运行的PHP进程,它查看包含模块名、控制器名、操作名和参数数组的作业队列 对于每个作业,我希望调用给定的控制器操作并检索渲染视图以进行进一步处理 我在考虑为每个作业启动一个Zend_应用程序实例,但不确定如何处理其余的工作。也许还有更好的办法 所以我的问题是: 如何调用Zend Framework进程中的其他控制器并检索其渲染视图 提前感谢大家Php 如何调用Zend Framework进程中的其他控制器并检索其渲染视图?,php,model-view-controller,zend-framework,controller,message-queue,Php,Model View Controller,Zend Framework,Controller,Message Queue,我有以下设置: 一个无休止地运行的PHP进程,它查看包含模块名、控制器名、操作名和参数数组的作业队列 对于每个作业,我希望调用给定的控制器操作并检索渲染视图以进行进一步处理 我在考虑为每个作业启动一个Zend_应用程序实例,但不确定如何处理其余的工作。也许还有更好的办法 所以我的问题是: 如何调用Zend Framework进程中的其他控制器并检索其渲染视图 提前感谢大家 $this->_forward('otherAction', 'otherControllerOrNull');
$this->_forward('otherAction', 'otherControllerOrNull');
您可以阅读以下帖子:我认为,使用前端控制器并发送新请求是最好的选择 类似于以下内容,来自控制器(非工作代码): 它可能不是这么简单,但需要考虑的是……你能不能不使用一个?如果您希望控制器中的输出,那么您只需使用
$this->view->action('someAction','someController')代码>或ActionStack帮助程序
无论哪种情况,都要注意性能影响。有关更多详细信息,请参阅。但这会将现有请求转发给指定的控制器/操作,对吗?在我看来,OP希望捕获该控制器/操作的输出,以便在当前请求中使用。没错,David,我希望保持当前进程运行,并只处理其他控制器生成的任何输出_forward将不允许此操作。您是否找到过此favo的解决方案?它有效:$request=new Zend_Controller_request_Http()$此->getFrontController()->setResponse(新Zend_控制器_响应_Cli)->setRequest($request->setControllerName('testController')->setActionName('testAction'))->setRouter(新Zend_控制器_路由器)->setParam('Noviewrender',true)…谢谢!:-)
$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);