2010-10-02 123 views
1

我還沒有使用過很多Zend路由器,所以不知道這是多麼困難或容易,但我認爲Zend是靈活的,所以它必須有一種方法可以輕鬆完成。Zend中的靈活路由

因此,我創建了一個控制器Cont與2動作actoneacttwo。這自然給了我

//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操作使用,看起來像這樣

site.com/actone 

我實現途徑是在cont控制器我可以通過創建得到這個樣子一個單獨的控制器Actone,這將是它的index動作,但這個動作在邏輯上屬於Cont控制器,所以我只想給出該路徑的外觀。

回答

4

您可以創建自定義路線...

威盛的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' 
    ) 
)); 
+0

你應該在這種情況下使用Zend_Controller_Router_Route_Static(http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.static),以避免發射了正則表達式引擎 – Maxence 2010-10-04 15:14:00

+0

正確。這只是一個簡單的例子。我會添加它來幫助下一個人。 – 2010-10-04 15:46:27

+0

還值得一提的是Jara靜態路由插件(http://github.com/jara/jara-base/blob/master/library/Jara/Plugin/StaticRoutes.php)。 – 2010-10-05 06:03:24

2

如果你可以讓你的Cont控制器成爲默認的控制器,它可能會做到這一點。 IIRC這是在Zend_Controller_Dispatcher_Abstract中,有setDefaultControllerName()以及setDefaultAction()和setDefaultModule()。