В представлениях, где макет не требуется, попробуйте:
$this->_helper->layout->disableLayout();
Это должно помешать отображению макета.
Если по какой-либо причине вы хотите выполнить то же действиес одного и того же контроллера, который вызывается много раз, но загрузите макет один раз (должен быть лучший способ организовать себя), но вы всегда можете попробовать:
public function indexAction()
{
static $firstTime = true;
if($firstTime){
$firstTime = false;
} else {
$this->_helper->layout->disableLayout(); //disable layout
}
}
Я постараюсь привести лучший пример: допустим, выесть контроллер foo с 3-мя представлениями: индекс, контакт, новости.
class Foo_Controller extends Zend_Controller
{
//...
public function indexAction()
{
//normal view layout loads
}
public function contactAction()
{
//normal view layout loads
}
public function newsAction()
{
//no layout for this
$this->_helper->layout->disableLayout(); //disable layout
}
}
Таким образом, представления, которым требуется макет, имеют одно.Те, которые этого не делают.Если вы не говорите макет, но на самом деле думаете о чем-то другом, то Zend_View_Helpers_Layout вам не нужно будет публиковать код, который поможет нам помочь вам!