我有一个返回JSON的动作。我需要从另一个控制器调用它,我需要将此响应放入一个变量来解析JSON。
我试过了:
private function makeListFromUrl($menu)
{
$req = new Zend_Controller_Request_Http();
$req->setRequestUri('/module/controller/get.json/');
$res = new Zend_Controller_Response_Http();
$dis = $this->getFrontController()->dispatch($req, $res);
$dis->dispatch($req, $res);
$json = $res->getBody();
return Zend_Json::decode($json);
}
但是此代码会导致前端控制器呈现操作,从而覆盖实际操作。我只想提出请求,将响应转换为变量,同时保持实际请求不变。
感谢。
答案 0 :(得分:0)
我有一个简单的解决方案,不确定它是否是最好的,但效果很好。
$actionHelper = new Zend_View_Helper_Action();
$var = $actionHelper->action('action', 'controller', 'module', $params);
你在视图中的方式相同,但在控制器中。
我希望这可以帮助别人。
答案 1 :(得分:0)
您必须为FrontController设置returnResponse(true)以发回响应。
private function makeListFromUrl($menu)
{
$req = new Zend_Controller_Request_Http();
$req->setRequestUri('/module/controller/get.json/');
$front = Zend_Controller_Front::getInstance();
$front->returnResponse(true);
$response = $front->dispatch($requestObj);
$json = $res->getBody();
return Zend_Json::decode($json);
}