路由是Kohana中的难点之一:
前面知道:Controller::rediect("welcome/index");会访问控制器 welcome的index函数
其实它的原理就是 :
页面发出对控制器index函数的请求;
找到当前使用匹配的路由;
按路由规则找控制器,再找到对应的函数。
疑问: 路由是一个非常重要的概念,如手册所说,你可以用路由做很多不可思议的事情。但是学到现在,个人感觉路由只是定位你控制器下面的函数,没感觉有手册说的那么夸张:
现在深入探究下路由的使用:
1,路由有自己的name,会不会是所有的路由根据name来区别。所有的控制器,视图或者自己新建立的文件夹项目都可以有属于自己的路由。
不继续猜想了,请看提示2.
2,手册中的转向404页面提示我,为什么要有多个路由,因为根据url编写的规则然后控制路由的转向才是路由的精髓所在。
优先极的问题:
在同一个页面中,相同的规则的路由越往上就越先调用。
模块中的init.php比bootstarp.php先调用。
规则学习:
我觉得弄懂了规则就相当与弄懂了路由。
先看分析下kohana默认路由:(有过REGEX学习的可以看下Kohana_Route类)
1 Route::set('deflaut', '(<controller>(/<action>(/<id>)))') 2 ->defaults(array( 3 'controller' => 'welcome', 4 'action' => 'index', 5 'id'=>'myid', 6 ));
注意这个规则 (<controller>(/<action>(/<id>))) 共有() ,<>,/三个符号,<>表示键值,()表示该参数可有可无,如果没有的话就会匹配到默认值 defaults数组中的值。/表示界限符。
思考:路由只能定位到控制器么??