Проблема Zend Framework с отображением URL - PullRequest
1 голос
/ 05 января 2009

Я пытаюсь сопоставить действие базовому URL и контроллеру по умолчанию.

Поклянись, что это должно быть прямым или даже «готовым» средством, но как ты сопоставляешь действия в своем контроллере по умолчанию с базовым URL, используя Zend Framework? Я довольно новичок в Framework, поэтому я надеюсь, что мне просто не хватает чего-то очевидного.

Попытка сопоставить:

domain.com / index / my-page to domain.com/my-page

без нарушения каких-либо других настроек маршрута по умолчанию.

Я могу взломать его, используя Zend_Router, но он нарушает другие правила, например /: контроллер /: действие /: модуль /: контроллер /: действие

примечание: / index / my-page - это пример URL-адреса. Мне нужно, чтобы он динамически работал для всех действий indexController.

Примеры сопоставления URL по запросу 'tharkun' indexController имеет методы indexAction и contactAction нужны URL

/index
/index/contact
/
/contact

2-й контроллер testController имеет методы indexAction и monkeyAction нужны URL

/test
/test/index
/test/monkey

в основном - если sys не может найти контроллер VAR, он ищет действие VAR в контроллере по умолчанию

1 Ответ

2 голосов
/ 05 января 2009

Контроллер по умолчанию - IndexController.

Отображение (по умолчанию) работает следующим образом:

/ => IndexController::indexAction
/index => IndexController::indexAction
/index/foo => indexController::fooAction
/foo => FooController::indexAction

Итак, добавьте пользовательский маршрут, подобный этому (будет иметь более низкий приоритет, чем по умолчанию)

$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$route = new Zend_Controller_Router_Route(
    '/:action',
    array(
        'controller' => 'index'
    )
);
$router->addRoute('user', $route);

Это не помешало мне использовать маршруты по умолчанию.

Редактировать: Как сказано в комментарии, это нарушит indexAction контроллеров не по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...