Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
527 views
in Technique[技术] by (71.8m points)

zend framework - How to disable layout and view renderer in ZF2?

How can i disable layout and view renderer in Zend Framework 2.x? I read documentation and can't get any answers looking in google i found answer to Zend 1.x and it's

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

But it's not working any more in Zend Framework 2.x. I need to disable both view renderer and layout for Ajax requests.

Any help would be great.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Just use setTerminal(true) in your controller to disable layout.

This behaviour documented here: Zend View Quick Start :: Dealing With Layouts

Example:

<?php
namespace YourAppController;

use ZendViewModelViewModel;

class FooController extends AbstractActionController
{
    public function fooAction()
    {
    $viewModel = new ViewModel();
    $viewModel->setVariables(array('key' => 'value'))
              ->setTerminal(true);

    return $viewModel;
    }
}

If you want to send JSON response instead of rendering a .phtml file, try to use JsonRenderer:

Add this line to the top of the class:

use ZendViewModelJsonModel;

and here an action example which returns JSON:

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

EDIT:

Don't forget to add ViewJsonStrategy to your module.config.php file to allow controllers to return JSON. Thanks @Remi!

'view_manager' => [
    'strategies' => [
        'ViewJsonStrategy'
    ],
],

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...