您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.2.1学习笔记-路由功能
发布时间:2017-09-19 11:34:59编辑:雪饮阅读()
路由功能只对pathinfo和兼容模式起作用
url重写模式可以让项目入口中省略输入index.php,但默认的前台模块如home模块名还要输入想要直接到达home模块而不必输入。
配置文件中添加允许模块列表并将如home模块设置为默认模块,则可以实现此效果:
'MODULE_ALLOW_LIST'=>array('Home','Admin'),
'DEFAULT_MODULE'=>'Home',
然后访问时如:
这样给用户提高了便利性。
配置静态路由:
上面的网址还可以更简洁如http://localhost/u
配置文件中添加如:
//启用路由功能
'URL_ROUTER_ON'=>true,
'URL_ROUTE_RULES'=>array(
//静态地址路由
'u'=>'User/index',
),
动态路由:
'u/:id'=>'User/index',
访问如:
模板中如:
这是Home模块下的User控制器下的index方法:<{$Think.get.id}>
多个动态地址结合的动态路由:
'u/:type/:attr/:list'=>'User/index',
模板中如:
<{$Think.get.type}>
<{$Think.get.attr}>
<{$Think.get.list}>
全路由:
':u/:type/:attr/:list'=>'User/index',
模板中和上面一样,访问如:
这里的xy是任意字符
限制动态路由必须为数字:
':u/:type\d/:attr/:list'=>'User/index',
模板同上,不变
访问如:
这里的“5”可以为任何数字但不能是非数字
动态路由加密:
':u/:type\d|md5/:attr/:list'=>'User/index',
和上面一样,只是访问时接收到的5变成了md5加密后的值。
动态路由可选传参:
':u/[:id\d]'=>'User/index',
模板中如:
<{$Think.get.id}>
访问如http://localhost/c/5或http://localhost/c/
动态路由末段:
':u/:id\d$'=>'User/index',
模板不变
访问只能到id段如:
这里的”5/”后面不能继续添加任何东西
正则路由:
上面的都是规则路由,规则路由在系统内置,但有些需求是比较复杂的,系统内置的路由未必能够解决问题,正则路由可以自己自由定制。
//u匹配静态段"User/index",":1"匹配(\d{2}),这个类似于原生php中正则匹配的模一样.
'/^u\/(\d{2})$/'=>'User/index?id=:1',
访问如:
'/^u_(\d{2})$/'=>'User/index?id=:1',
访问如:
'/^u_(\d{2})$/'=>'User/index?id=:1|md5',
正则路由也可以对匹配出来的参数值(这里是id值)使用函数,如这里使用了md5,则模板中get到的id值是一个md5值。
简洁的静态路由:
删除或注释掉上面的路由规则配置,添加静态路由如:
//配置静态路由
'URL_MAP_RULES'=>array(
'u'=>'User/index',
),
访问如:
'u/i'=>'User/index',
访问如:
'u_i'=>'User/index',
访问如:
闭包支持:
有时候并非需要执行控制器中的方法,可以用闭包定义一些特殊的需求的路由。
删除或注释上面的简洁的静态路由配置,并添加规则如:
'URL_ROUTE_RULES'=>array(
'u/:id'=>function ($id){
echo $id;
}
访问如:
这样访问并没有进入控制器,而是进入了路由中规定的一个匿名方法中了。
'/^u_(\d{2})$/'=>function ($id){echo $id;}
同样支持正则,访问如:
http://localhost/u_55/
关键字词:thinkphp3.2.1,路由