Zend中的灵活路由

时间:2010-10-02 14:32:07

标签: php zend-framework zend-route

我还没有使用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控制器中的cont操作

site.com/actone

我意识到我可以通过创建一个名为Actone的单独控制器来获得此外观,这将是其index操作,但此actone操作在逻辑上属于Cont控制器所以我想简单介绍一下这条道路。

2 个答案:

答案 0 :(得分: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'
    )
));

答案 1 :(得分:2)

如果你可以使你的Cont控制器成为可能做到这一点的默认控制器。 IIRC这是在Zend_Controller_Dispatcher_Abstract中,有setDefaultControllerName()以及setDefaultAction()和setDefaultModule()。