Скрыть контроллер индекса от 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"
Решает это?