Nie widziałem jak dokładnie opisać w temacie mój problem, dlatego rozszerzam go tutaj. Moja aplikacja ma strukturę modułową, składa się z student, professor i admin. Dla każdego z nich są inne controllery, modele, widoki i layouty. Wszystko działa pięknie, jednak mam problem z menu.
Dla każdego modułu mam napisane menu w postaci pliku php jako tablica, coś na takiej zasadzie:
'label' => 'Moje konto', 'module' => 'student', 'controller' => 'index', 'action' => 'index', 'route' => 'default' ),
Pliki są wrzucone do głównego folderu modułu i nazywają się odpowiedniej: menu_stu.php , menu_pro.php, menu_adm.php . Dla każdego moduło w Bootstrapie dodałem odpowiednio wczytanie tego pliku. Dla studenta:
protected function _initNavigation() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $config = require APPLICATION_PATH . '/modules/student/menu_stu.php'; $navigation = new Zend_Navigation($config); $view->navigation($navigation); }
Dla profesora:
$config = require APPLICATION_PATH . '/modules/professor/menu_pro.php'; $navigation = new Zend_Navigation($config); $view->navigation($navigation);
I dla admina:
$config = require APPLICATION_PATH . '/modules/admin/menu_adm.php'; $navigation = new Zend_Navigation($config); $view->navigation($navigation);
Mój problem polega na tym, że bez względu na jaki moduł wejdę, to zawsze jest wczytywane menu ze studenta. Jeśli w Boostrapie dla profesora zmienię nazwę pliku z menu z menu_pro.php na np menu.php, to wtedy pluje się, że nie ma takiego pliku (co jest logiczne).
Teraz, aby było śmiesznie jeśli usunę cały folder (moduł) student, to wczytywane jest menu dla profesora. Czyli wychodzi na to, że wczytywane jest menu jakby ostatnie z listy.
Jak to rozwiązać?
