0

我正在使用以下路由示例:

https://github.com/phalcon/mvc/blob/master/simple-subcontrollers/app/config/routes.php

谁能向我解释为什么在第 12 行有这个:

$router->add('/:controller', array(...

我们不是已经将第 5 行的路线定义为:

$router->add('/:controller/:action/:params', array(

/:controller ”是“ /:controller/:action/:params ”的子集。

如果删除“ /:controller ”路由,以控制器名称结尾的 URL 将不匹配。

为什么路由器不回退到我可以指示为的默认操作名称:

$router->setDefaultAction('index');

这是错误还是功能?

谢谢!

4

1 回答 1

1

这条路线

$router->add('/:controller/:action/:params', array(

仅当它获取所有部分以使路线有效时才会执行,例如

myapp/users/logout/dave

以上将匹配该路由正在寻找的内容并导致该路由执行。

myapp/users

但是,由于缺少操作和参数,上述内容不匹配,并且带有 / 和没有的 url 不是相同的 url。

由于您可以使用 add() 根据需要添加许多路由,因此添加路由的顺序表明它们的相关性,最近添加的路由比第一个添加的路由具有更高的相关性。在内部,所有定义的路由都以相反的顺序遍历,直到 Phalcon\Mvc\Router 找到与给定 URI 匹配的路由并处理它,而忽略其余路由。

希望这可以帮助。

于 2013-10-11T13:23:14.493 回答