Większość osób na tym forum zaleca stosowanie w layoutach helpera widoku "action" czyli coś takiego:
<div class="box_menu">{$this->action( MenuController ...... )}</div>, co dla mnie jest totalnym nieporozumieniem, moim zdaniem widoki nie mogą wywoływać innych akcji, ponieważ ich funkcją jest tylko sztywne wyświetlanie tego co wygenerował kontroller. Nie wiem może mam złe podejście i myśle trochę po staremu, ale jednak nie lubię bałaganu w aplikacjach. Jak ktoś ma inne zdanie to proszę mnie poprawić i udowodnić dlaczego tak nie jest, będę bardzo wdzięczny

Słabo znam Zenda ale spróbowałem znaleźć rozwiązanie i wyszło mi coś takiego:
myproject\application\views\layouts\layout.phtml
<div id="menu"> </div> <div id="content"> </div>
myproject\application\controllers\indexController.php
<?php function menuAction(){ ); $this->view->menu = $mainMenu; $this->_helper->viewRenderer->setResponseSegment('menu'); } ?>
myproject\library\home\controller\plugin\ActionSetup.php
<?php /** * Front Controller plug in to set up the action stack. * */ class Home_Controller_Plugin_ActionSetup extends Zend_Controller_Plugin_Abstract { public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $front = Zend_Controller_Front::getInstance(); if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack')) { $actionStack = new Zend_Controller_Plugin_ActionStack(); $front->registerPlugin($actionStack, 97); } else { $actionStack = $front->getPlugin('Zend_Controller_Plugin_ActionStack'); } $menuAction = clone($request); $menuAction->setActionName('menu') ->setControllerName('index'); $actionStack->pushStack($menuAction); } } ?>
Menu się wyświetla w kazdym kontrollerze i akcji, a definiuje się go tylko jeden raz.
Tylko teraz taki problem, jeśli wejde do http://myproject/index/menu oczywiście wyświetla mi się menu dwa razy.
I drugie: gdybym chciał w innym kontrollerze zmienić wartości przekazywane do tego menu niestety wyświetlają sie zawsze te z indexController.php. Jak to naprawić, albo obejść?
Bedę wdzięczny za każdą radę, zgodną z koncepcją MVC oczywiście

Przepraszam za możliwe błedy, jestem cudzoziemcem.