如何在JSON对象中使用呈现的Zend视图

问题描述:

我试图在JSON对象中使用呈现的视图,然后 将此返回给客户端。我怎样才能渲染一个真正不属于特定动作的phtml文件?如何在JSON对象中使用呈现的Zend视图

来自客户端的请求操作没有意见。然后它调用prepareForm()。在这个函数里,我想渲染 form.phtml并将输出传递给数组的'html'键。

private function prepareForm() 
    { 
     $json = Zend_Json::encode(array(
      'html' => $this->partial('form.phtml'), 
      'role' => $this->role, 
      'lang' => $this->lang 
     )); 

     echo $json; 
    } 

我该如何在Zend Framework中做到这一点?什么是最好的方法来做到这一点?用你的行动

private function prepareForm() 
{ 
    $view = new Zend_View(); 
    $path = '/../'; // Replace with path to phtml 

    $view->addScriptPath($path); 

    $json = Zend_Json::encode(array(
     'html' => $view->render('form.phtml'), 
     'role' => $this->role, 
     'lang' => $this->lang 
    )); 

    echo $json; 
} 

你需要一个Zend的视图实例不是正确的做事方式。 MVC模式用于分离逻辑以查看。你可以只禁用的布局和分配给您的视图的JSON呈现如下:

$this->view->json = $json; 

,并在您的视图:

<?= $this->json ?> 

如果您的请求来自一个Ajax脚本,你甚至可以品牌使用AjaxContext动作助手的东西更漂亮。这将允许您针对不同类型的请求使用一个动作,并根据请求类型(Ajax等)呈现正确的视图。

您可以禁用布局和视图:

$this->_helper->layout()->disableLayout(); 
$this->_helper->viewRenderer->setNoRender(); 

对我来说,echo从控制器是

非常感谢