Скрыть контроллер индекса от URL для одного модуля

После создания модульной структуры для отдельного модуля будет предотвращено появление в нем имени контроллера.

все работает с дефолтом

site.con/foo/index/action/

Я хотел бы написать как

site.com/foo/action/

будучи IndexController единственным контроллером этого модуля.

Я протестировал несколько решений, но они не работают. Будучи первым приложением с ZF, я не совсем понимаю, какие шаги нужно предпринять.

1 ответ

Решение

Вам нужны Zend Routes.

Определите маршруты в вашем

bootstrap.php

Откройте свой bootstrap.php и поместите следующее:

function _initRoutes() {
        $front_controller = Zend_Controller_Front::getInstance();
        $router = $front_controller->getRouter();
        $router->addRoute('foo-action', new Zend_Controller_Router_Route(
            '<foo module name>/<action name>', array('module' => 'foo', 'controller' => 'index', 'action' => '<action-name>')
        ));
}

PS: работал / не работал? Упомяните в комментариях, а если не получилось, укажите правильные названия модуля, контроллера и действия.

РЕДАКТИРОВАТЬ:

Как установить контроллер / модуль по умолчанию в application.ini

routes.index.type = "Zend_Controller_Router_Route"
routes.index.route = "/"
routes.index.defaults.module = "<module name>"
routes.index.defaults.controller = "index"
routes.index.defaults.action = "index"

Решает это?

Другие вопросы по тегам