2010-10-02 128 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()。