/ / Модули за обаждания от приложението Bootstrap - zend-framework, bootstrapping, zend-navigation, zend-application

Контролерите на модулите за повикване от приложението Bootstrap - zend-framework, bootstrapping, zend-navigation, zend-application

Зададох си въпрос като този по-рано, но смятам, че това е различно (това е само общ въпрос).

Въведох 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 и във вашия контролер.