/ / Модулі викликів контролера з Bootstrap програми - zend-framework, завантаження, zend-navigation, zend-application

Регулятор викликів модулів з програми Bootstrap - zend-framework, завантаження, zend-навігація, zend-додаток

Я поставив це питання раніше, але я вважаю, що це інше (це було лише загальне питання).

Я реалізував Zend_Navigation.

Для меню я використовував таблицю БД для зберігання пунктів меню та рекурсії на масиві, щоб отримати дерево елементів меню.

Всі ці дії відбуваються в моєму модулі під назвою Menu. Всередині:

Menu --
Controllers --
IndexController.php
Models--
DbTable--
Menu.php
Bootstrap.php

всередині контролера індексу у мене є 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

Отже, будь-які ідеї, як я повинен зробити це, щоб правильно працювати?

P.S. чи можна запустити 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, так і в контролері.