Zend Framework - связывание Router_Rewrite? - PullRequest
0 голосов
/ 27 января 2011

У меня есть проект, который использует каталог модулей на основе пользовательских маршрутов, а не маршрутов по умолчанию. Система загружает файлы каждый модуль rout.ini и добавляет эти маршруты в маршрутизатор Zend_Controller_Router_Rewrite.

protected function _initRoutes() {
        $this->bootstrap('FrontController');
        $front = $this->getResource('FrontController');

        $routes = Module_Loader::getInstance()->getRoutes();

        $front->setRouter($routes);
        $front->getRouter()->removeDefaultRoutes();
    }

То, чего я пытаюсь достичь, это добавить код языка в URI, но связывание с Router_Rewrite невозможно. У меня есть маршрут:

[routes]
;Index page
routes.core_index_index.type = "Zend_Controller_Router_Route_Static"
routes.core_index_index.route = "/"
routes.core_index_index.defaults.module = "core"
routes.core_index_index.defaults.controller = "index"
routes.core_index_index.defaults.action = "index"
routes.core_index_index.defaults.frontend = "true"
routes.core_index_index.defaults.langKey = "route_index_page_description"
routes.core_index_index.defaults.localization.enable = "true"

По сути, я хочу, чтобы URL выглядел следующим образом: http://myhost.com/en/ или http://myhost.com/, которые оба должны указывать на это действие индекса контроллера домашней страницы в основном модуле.

Я могу добавить это к указанному выше правилу маршрутизации как "/ ([en /] *)", но я не хочу, чтобы модуль заботился о работе с такими системными функциями.

Возможно ли это?

Спасибо.

1 Ответ

1 голос
/ 27 января 2011

Вы можете использовать приведенную ниже конфигурацию.Он должен работать для всех ваших контроллеров:

[routes]
;Index page
routes.core_index_index.route = ":language/:@controller/:@action/*"
routes.core_index_index.defaults.controller = "index"
routes.core_index_index.defaults.action = "index"
routes.core_index_index.reqs.language= "[a-z]{2}"
routes.core_index_index.defaults.frontend = "true"
routes.core_index_index.defaults.langKey = "route_index_page_description"
routes.core_index_index.defaults.localization.enable = "true"

Вам нужно устанавливать параметр 'language' каждый раз, когда вы используете этот маршрут.Чтобы упростить задачу, вы можете установить значение по умолчанию для «language» следующим образом:

Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('language', 'en');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...