如何在ZF2中禁用布局和视图渲染器?

Vis*_*man 21 zend-framework zend-framework2

如何在Zend Framework 2.x中禁用布局和查看渲染器?我阅读文档,无法得到任何答案在谷歌我找到答案Zend 1.x和它

$this->_helper->viewRenderer->setNoRender(true);
$this->_helper->layout->disableLayout();
Run Code Online (Sandbox Code Playgroud)

但它在Zend Framework 2.x中不再起作用了.我需要为Ajax请求禁用视图渲染器和布局.

任何帮助都会很棒.

edi*_*igu 35

只需setTerminal(true)在控制器中使用即可禁用布局.

此行为记录在此处:Zend View快速入门::处理布局

例:

<?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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果要发送JSON响应而不是呈现.phtml文件,请尝试使用JsonRenderer:

将此行添加到类的顶部:

use Zend\View\Model\JsonModel;
Run Code Online (Sandbox Code Playgroud)

这里是一个返回JSON的动作示例:

public function jsonAction()
{
    $data = ['Foo' => 'Bar', 'Baz' => 'Test'];
    return new JsonModel($data);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

不要忘记添加ViewJsonStrategy到您的module.config.php文件中以允许控制器返回JSON.谢谢@Remi!

'view_manager' => [
    'strategies' => [
        'ViewJsonStrategy'
    ],
],
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记将这些'策略'=>数组('ViewJsonStrategy',)添加到http://akrabat.com/zend-framework-2/returning-json-from-a-zf2-的config.php中控制器动作/ (3认同)