Зададох си въпрос като този по-рано, но смятам, че това е различно (това е само общ въпрос).
Въведох Zend_Navigation.
За менюто използвах DB Table, за да съхранявам елементи от менюто и рекурсия на Array-s, за да получа дървото от елементите на менюто.
Всичко това се извършва в моя модул, наречен Menu. Вътре имам:
Menu --
Controllers --
IndexController.php
Models--
DbTable--
Menu.php
Bootstrap.php
вътре индекс контролер имам a function menuGenerator($menu_id)
Така следвайки ръководствата за Zend_Navigation, менюто се инициализира в първоначалното зареждане на приложението.
функцията ми във вътрешността на приложението изглежда така:
public function _initMenus() {
$menuArray = new Menu_IndexController();
$outArray = $menuArray->menuGenerator(1);
$mainmenu = new Zend_Navigation($outArray);
$this->view->navigation($mainmenu);
}
и това ми дава грешка:
Fatal error: Class "Menu_IndexController" not found in D:ServerxampphtdocsprojectapplicationBootstrap.php on line 8
Така че, Някакви идеи как да го направя, за да работи правилно?
Послепис възможно ли е да стартирате 2 нови менюта едновременно? за ех: имам нужда от 1. главно меню 2. меню от долния колонтитул (всяка връзка към статия би била хубава)
Отговори:
0 за отговор № 1По подразбиране, автозареждачът на Zend Framework не работиавтоматично зареждат контролерите по същия начин, по който зареждат други компоненти (модели, помощници за помощ, формуляри и т.н.), така че PHP хвърля грешката, казвайки, че не може да намери класа. Следва да работи следното:
public function _initMenus() {
require_once("./Controllers/IndexController.php");
$menuArray = new Menu_IndexController();
$outArray = $menuArray->menuGenerator(1);
$mainmenu = new Zend_Navigation($outArray);
$this->view->navigation($mainmenu);
}
0 за отговор № 2
Това е доста необичайно да наричаме контролен метод по време на Bootstrap, тъй като има много задачи за стартиране, от които зависи действията на контролера. В твоя случай, методът на контролера menuGenerator()
всъщност не е действие, така че вероятно няма да е проблем.
Въпреки това все още е достатъчно необичайно, че ще преместя menuGenerator()
метод в своя клас. След това извикайте тази операция при Bootstrap и във вашия контролер.