Zend-маршрутизация не работает

Я пытаюсь настроить свой zend-маршрут с помощью route.ini и bootstrap, но по какой-то причине он не может маршрутизироваться, как ожидалось. Мои маршруты.ini и bootstrap.php выглядят следующим образом.

маршруты.ini

[production]
routes.guestbook.route = "/guestbook"
routes.guestbook.defaults.controller = guestbook
routes.guestbook.defaults.action = index

bootstrap.php

protected function _initRoutes() 
{

// Get Front Controller Instance

$front = Zend_Controller_Front::getInstance();

// Get Router
$router = $front->getRouter();

$router->addConfig(new Zend_Config_Ini(APPLICATION_PATH.'/configs/routes.ini', 'production'), 'routes');

}

person javaadgrid    schedule 24.10.2011    source источник
comment
Я хочу, чтобы мой домен.com/guestbook вызывал мой контроллер гостевой книги и действие index, но в настоящее время это дает мне ошибку 500.   -  person javaadgrid    schedule 24.10.2011
comment
К вашему сведению, ваш файл начальной загрузки должен быть Bootstrap.php (заглавная B)   -  person Phil    schedule 24.10.2011


Ответы (2)


После того, как я прочитал ваш комментарий, я могу утверждать, что вы можете удалить эти операторы (config и bootstrap), потому что вы хотите добиться нормального поведения маршрутизатора Zend Framework по умолчанию, если вы не используете модули.

Спасибо FloydThreepwood, который помнит меня, чтобы написать эту деталь.

person Aurelio De Rosa    schedule 24.10.2011
comment
@FloydThreepwood Вы правы, но я предположил, что это не так. - person Aurelio De Rosa; 24.10.2011
comment
Может быть, просто подумал, что это сделает ваш ответ полным. - person FloydThreepwood; 24.10.2011
comment
Я не использую модули. И можете ли вы подробнее рассказать об удалении операторов config и bootstrap? Спасибо за ответ - person javaadgrid; 24.10.2011
comment
@javaadgrid Вы можете удалить всю часть кода, которую вы разместили здесь (3 строки config.ini), и весь метод _initRoutes(). - person Aurelio De Rosa; 24.10.2011
comment
Но почему я не могу успешно его маршрутизировать? - person javaadgrid; 24.10.2011
comment
@javaadgrid Я думаю, вы не добавили этот новый маршрут в Zend_Route, но я не совсем уверен. Мне нравится добавлять новые маршруты следующим образом: «изменение действия по умолчанию zend framework на основе контроллера»> stackoverflow.com/questions/7870405/ - person Aurelio De Rosa; 24.10.2011

Самый простой способ настроить маршрутизацию — использовать ссылку Zend_Application_Resource_Router.

Конфигурация сохраняется в вашем файле application.ini и все, никакого дополнительного кода не требуется.

Похоже, вы используете статический маршрут (без компонентов переменного пути), попробуйте это в своем файле application.ini

resources.router.routes.guestbook.type = "Zend_Controller_Router_Route_Static"
resources.router.routes.guestbook.route = "guestbook"
resources.router.routes.guestbook.defaults.module = "default"
resources.router.routes.guestbook.defaults.controller = "guestbook"
resources.router.routes.guestbook.defaults.action = "index"

Удалите метод _initRoutes() из класса Bootstrap.


Кроме того, это всего лишь отступление, но при использовании других ресурсов, таких как фронт-контроллер, в методе начальной загрузки _init*, вы должны убедиться, что они были правильно загружены. Для этого извлеките их следующим образом.

protected function _initSomething()
{
    // make sure resource is bootstrapped
    $this->bootstrap('frontController');

    // retrieve resource
    $front = $this->getResource('frontController');
}

См. http://framework.zend.com/manual/en/zend.application.theory-of-operation.html#zend.application.theory-of-operation.bootstrap.dependency-tracking

person Phil    schedule 24.10.2011