На мой взгляд, лучше использовать
$layout = Zend_Layout::getMvcInstance();
$layout->setLayout('otherlayout');
по вашему мнению, а не использовать
$this->_helper->layout->setLayout('otherlayout');
с контроллера.
В последнем методе есть ошибка. У меня был опыт, когда
Я использовал
$this->_helper->layout->setLayout('otherlayout');
и новый макет отображался внутри старого макета.
Я использовал
$layout = Zend_Layout::getMvcInstance();
$layout->setLayout('otherlayout');
тогда это сработало