Zend Framework Zend_Controller_Router_Route(在路由参数之前捕获所有控制器)

时间:2010-12-09 14:46:44

标签: php zend-framework routing

我对这个问题的标题表示道歉并不是很具描述性,但事实是我不太清楚这个问题的正确术语是什么。我是使用Zend Framework的新手。

想象一下这个网址:www.foo.com/bar 下面的代码采用“bar”并将其传递给索引控制器的加载操作。但是我有另一个名为“mypresentation”的控制器,现在被忽略了,现在下面的路由器已被添加到Bootstrap中。

$route = new Zend_Controller_Router_Route(
    '/:prospect',
    array('controller'=>'index', 'action' => 'load'));

$router->addRoute('load', $route);

如何让路由器忽略硬编码控制器?

非常感谢任何帮助,如果有更多信息,我会更改标题。

亚历。

FIX:

$prospectRoute = new Zend_Controller_Router_Route(
    '/:prospect',
    array('controller'=>'index', 'action' => 'load')
);

$route2 = new Zend_Controller_Router_Route(
    'mypresentation',                        
     array('controller' => 'mypresentation') 
);

$router->addRoute('index', $prospectRoute);
$router->addRoute('mypresentation', $route2);      

1 个答案:

答案 0 :(得分:1)

在此之前添加另一条路线,首先捕获到mypresentation控制器的所有路线。它按顺序遍历路径,直到找到匹配的第一个路径。

$route2 = new Zend_Controller_Router_Route(
    'mypresentation',                        // what's typed in URL
     array('controller' => 'mypresentation') // send here
);

$router->addRoute('mypresentation', $route2);
$router->addRoute('load', $route);           // Your original route

如果要捕获所有控制器,请使用

$route3 = new Zend_Controller_Router_Route(
    ':controller',                       
     array('controller' => ':controller')
);