2009-12-16 7 views
0

J'ai une action qui renvoie un JSON. Je dois l'appeler d'un autre contrôleur et j'ai besoin d'obtenir cette réponse dans une variable pour analyser le JSON.Définir la réponse Zend dans une variable

J'ai essayé:

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

Mais ce code provoque le contrôleur avant de rendre l'action, outrepassant l'action réelle. Je veux juste faire une demande, obtenir la réponse dans une variable, tout en laissant la demande réelle intacte.

Merci.

Répondre

0

J'ai une solution simple à cela, je ne sais pas si c'est le meilleur, mais a très bien fonctionné. De la même manière que vous le feriez à l'intérieur de la vue, mais dans le contrôleur.

$actionHelper = new Zend_View_Helper_Action(); 

$var = $actionHelper->action('action', 'controller', 'module', $params); 

J'espère que cela peut aider quelqu'un.

0

Vous devez définir returnResponse (true) pour que FrontController renvoie la réponse.

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); 
} 
Questions connexes