如何在JSON对象中使用渲染的Zend View

时间:2012-02-21 11:18:42

标签: json zend-framework zend-view

我正在尝试在JSON对象中使用渲染视图然后 将此返回给客户端。我怎样才能渲染一个不真实的phtml文件 属于具体行动?

客户端请求的操作没有查看。 然后调用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中执行此操作?最好的方法是什么?

非常感谢

2 个答案:

答案 0 :(得分:1)

您需要一个Zend View实例:

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

答案 1 :(得分:0)

您可以在操作中禁用布局和视图:

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

对我来说,来自控制器的echo不是正确的做事方式。 MVC模式用于将逻辑分离到视图。您可以禁用布局并为视图指定json,如下所示:

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

并在您看来:

<?= $this->json ?>

如果您的请求来自Ajax脚本,您甚至可以使用AjaxContext动作帮助程序使事情变得更漂亮。例如,这将允许您对不同类型的请求使用一个操作,并根据请求类型(Ajax等)呈现正确的视图。