我正在尝试在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中执行此操作?最好的方法是什么?
非常感谢
答案 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等)呈现正确的视图。