Zend - how to disable layout on a given action?
Asked Answered
S

3

15

I have the following controller that, among other methods it has this one:

class EquipasController extends OccControllerAction {

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

I was expecting that, when I do: http://www.example.com/equipas/lista/

the controller will execute and I will see no layout rendering on my viewport.

However, that's not the case. I get my home page rendered.

Where on ZF do we normally say: if an action doesn't exist a home page should appear?

Note: If, instead of: http://www.example.com/equipas/lista/

I do, http://www.example.com/equipas/adasdas21232131/ that doesn't exist.

I get the same home page rendering.

What could be the cause for such a behaviour?

A Zend Newbie, MEM

Snippet answered 26/11, 2010 at 18:1 Comment(4)
Something wrong with my question? Should I provide more details? Am I saying something dummy? Please let me know. Stuck here.Snippet
Could you specify your problem? Do you want to disable the layout or do you want redirect to the homepage when an action doesn't exist?Warty
Thanks. No. I don't want to disable the layout nor redirect to homepage when the action doesn't exist. What I want is, when we do: mysite.com/equipas/lista (SO, when we call the action lista) the layout isn't used. Why? For ajax calls for example. Thanks.Snippet
Solved. We also must enable that action on Acl. Otherwise nothing will run on it, hence, the layout will NOT disable.Snippet
H
5

This may not answer your question directly (which you seem to have solved anyway), but to disable the layout and deliver a different view for AJAX requests, consider using the AjaxContext action helper.

Hardecanute answered 29/11, 2010 at 2:45 Comment(1)
Will that help me on solving some deep link issues?Snippet
T
23

Add this inside your controller:

public function preDispatch(){
        $this->_helper->layout()->disableLayout(); 
        $this->_helper->viewRenderer->setNoRender(true);
    }
Tampon answered 16/11, 2012 at 9:38 Comment(0)
H
5

This may not answer your question directly (which you seem to have solved anyway), but to disable the layout and deliver a different view for AJAX requests, consider using the AjaxContext action helper.

Hardecanute answered 29/11, 2010 at 2:45 Comment(1)
Will that help me on solving some deep link issues?Snippet
W
0

in zf2

 public function indexAction()
    {    
        echo "json"
        return $this->getResponse();
    }
Wakeen answered 6/5, 2015 at 12:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.