将Zend响应设置为变量

时间:2009-12-16 21:37:43

标签: zend-framework request response

我有一个返回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);
}

但是此代码会导致前端控制器呈现操作,从而覆盖实际操作。我只想提出请求,将响应转换为变量,同时保持实际请求不变。

感谢。

2 个答案:

答案 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);
}