如何在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
从控制器是
非常感谢