我正在使用以下路由示例:
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 ”路由,则不会匹配以控制器名称结尾的网址。
为什么路由器不会回退到默认操作名称,我可以指示为:
$router->setDefaultAction('index');
这是一个错误还是一个功能?
谢谢!
答案 0 :(得分:1)
此路线
$router->add('/:controller/:action/:params', array(
只有在获得所有部分以使路由有效时才会执行
myapp/users/logout/dave
以上内容将匹配该路由正在查找的内容并导致路由执行。
myapp/users
但由于缺少动作和params,上述内容也不匹配,而且/和没有的url不是相同的url。
由于您可以根据需要使用add()添加许多路线,因此添加路线的顺序表明它们的相关性,添加的最新路线比首次添加的路线更具相关性。在内部,所有定义的路由都以相反的顺序遍历,直到Phalcon \ Mvc \ Router找到与给定URI匹配并处理它的那个,而忽略其余的。
希望这会有所帮助。