如何禁用Zend Framework 2.x中的布局和视图渲染器?我阅读文档并不能得到任何期待在谷歌的答案我找到答案的Zend 1.x和它的如何在ZF2中禁用布局和查看渲染器?
$this->_helper->viewRenderer->setNoRender(true);
$this->_helper->layout->disableLayout();
但它不是在Zend框架2.x的工作更多的我需要禁用视图渲染器和Ajax请求的布局。
任何帮助将是伟大的。
如何禁用Zend Framework 2.x中的布局和视图渲染器?我阅读文档并不能得到任何期待在谷歌的答案我找到答案的Zend 1.x和它的如何在ZF2中禁用布局和查看渲染器?
$this->_helper->viewRenderer->setNoRender(true);
$this->_helper->layout->disableLayout();
但它不是在Zend框架2.x的工作更多的我需要禁用视图渲染器和Ajax请求的布局。
任何帮助将是伟大的。
只需在控制器中使用setTerminal(true)
即可禁用布局。
这种行为记录在这里:Zend View Quick Start :: Dealing With Layouts
例子:
<?php
namespace YourApp\Controller;
use Zend\View\Model\ViewModel;
class FooController extends AbstractActionController
{
public function fooAction()
{
$viewModel = new ViewModel();
$viewModel->setVariables(array('key' => 'value'))
->setTerminal(true);
return $viewModel;
}
}
如果你想发送JSON响应,而不是渲染一个.phtml文件,尝试使用JsonRenderer:
添加此行到最高级:
use Zend\View\Model\JsonModel;
和h ERE返回JSON的动作例:
public function jsonAction()
{
$data = ['Foo' => 'Bar', 'Baz' => 'Test'];
return new JsonModel($data);
}
编辑:
不要忘记添加ViewJsonStrategy
您module.config.php
文件,以允许控制器返回JSON。谢谢@Remi!
'view_manager' => [
'strategies' => [
'ViewJsonStrategy'
],
],
您可以添加到您的结束动作:
return $this->getResponse();
略上述答案的详细信息...我动态输出不同类型的文件时,使用此常:JSON,XML ,pdf等...这是输出一个XML文件的例子。
// In the controller
$r = $this->getResponse();
$r->setContent(file_get_contents($filePath)); //
$r->getHeaders()->addHeaders(
array('Content-Type'=>'application/xml; charset=utf-8'));
return $r;
该视图不被渲染,只有指定的内容和标题被发送。
不要忘了将这个'strategies'=>数组( 'ViewJsonStrategy', )添加到你的config.php中http://akrabat.com/zend-framework-2/returning-json-from -a-zf2-controller-action/ –
是的,你是对的。我刚刚编辑了我的答案。谢谢。 – edigu
如果我们想用json编码返回viewModel,我们应该怎么做? –