Гибкая маршрутизация в Zend

Я еще не очень много использовал Zend Router, поэтому не уверен, насколько это сложно или просто, но я думаю, что Zend гибок, поэтому у него должен быть способ сделать это легко.

Поэтому я создаю контроллер Cont с двумя действиями actone и acttwo. Это, естественно, дает мне

//the default index controller
site.com/                
site.com/index/index     

//and my controller
site.com/cont/index
site.com/cont/actone
site.com/cont/acttwo

Есть ли способ получить доступ к действию actone, которое находится в контроллере cont, используя маршрут, который выглядит следующим образом

site.com/actone

Я понимаю, что мог бы получить этот вид, создав отдельный контроллер с именем Actone, и это будет его действие index, но это действие actone логически принадлежит контроллеру Cont, поэтому я хочу просто создать внешний вид этого пути.


person jblue    schedule 02.10.2010    source источник


Ответы (2)


Вы можете создать собственный маршрут...

Через application.ini - Ресурс приложения маршрутизатора

resources.router.routes.route_title.route               = "/actone"
resources.router.routes.route_title.defaults.controller = "cont"
resources.router.routes.route_title.defaults.action     = "actone"
resources.router.routes.route_title.type                = "Zend_Controller_Router_Route_Static"

Или добавив его непосредственно в роутер.

$router = Zend_Controller_Front::getInstance()->getRouter();    
$router->addRoute('route_title', new Zend_Controller_Rotuer_Route_Static(
    '/actone',
    array(
        'controller' => 'cont',
        'action'     => 'actone'
    )
));
person Adrian Schneider    schedule 02.10.2010
comment
Вы должны использовать Zend_Controller_Router_Route_Static (фреймворк .zend.com/manual/en/) в этом случае, чтобы избежать запуска механизма регулярных выражений. - person Maxence; 04.10.2010
comment
Правильно. Это был просто быстрый пример. Я добавлю это, чтобы помочь следующему человеку. - person Adrian Schneider; 04.10.2010
comment
Также примечателен плагин статического маршрута Jara (github.com/jara/jara-base/blob/master/library/Jara/Plugin/). - person David Weinraub; 05.10.2010

Если бы вы могли сделать свой контроллер Cont контроллером по умолчанию, это, вероятно, помогло бы. IIRC это в Zend_Controller_Dispatcher_Abstract, есть setDefaultControllerName(), а также setDefaultAction() и setDefaultModule().

person Robin    schedule 02.10.2010