Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to disable a view script in a controller - Zend Framework

I am playing with zend framework's MVC. One thing I found out is that Zend Framework tries to include a view script whenever a controller is called. I can disable it in bootstrap with the following code.

$frontController->setParam('noViewRenderer',true);

However, I have to initialize Zend_View class in a controller method then render a script file myself.

How can I stop including a view script in a controller method so I can disable it if only I want to?

like image 969
Moon Avatar asked Oct 11 '09 03:10

Moon


2 Answers

you can disable the view renderer controller helper, with this code in your controller:

public function myAction()
{
    $this->_helper->viewRenderer->setNoRender(true);
    // from now on, ZF won't search for a matching view script file.
}
like image 165
farzad Avatar answered Oct 13 '22 21:10

farzad


The best example would be to use both commands above:

public function myAction() {
    $this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender(true);
}

First one disables layout,in general is enabled

application.ini

default

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

$this->_helper->layout->disableLayout();

and second disables view script (.phtml) so exception is not thrown if view script file is not found

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

There are also view helpers that include bouth listened abowe and are not necessary, for example you want to return JSON from array data and not render view element.

public function myAction() {
    $this->_helper->json(array());
}

will not render layout nor view script.

like image 42
fuzin Avatar answered Oct 13 '22 19:10

fuzin