thinkphp学习——路由学习

路由学习

路由定义

  路由注册可以采用方法动态单个和批量注册,也可以直接定义路由定义文件的方式进行集中注册。

规则表达式

  规则表达式通常包含静态地址和动态地址,或者两种地址的结合,例如下面都属于有效的规则表达式:

'/' => 'index', // 首页访问路由
'my'        =>  'Member/myinfo', // 静态地址路由
'blog/:id'  =>  'Blog/read', // 静态地址和动态地址结合
'new/:year/:month/:day'=>'News/read', // 静态地址和动态地址结合
':user/:blog_id'=>'Blog/read',// 全动态地址

  规则表达式的定义以/为参数分割符(无论你的PATH_INFO分隔符设置是什么,请确保在定义路由规则表达式的时候统一使用/进行URL参数分割)。

  每个参数中以“:”开头的参数都表示动态变量,并且会自动绑定到操作方法的对应参数。

可选定义

支持对路由参数的可选定义,例如:


'blog/:year/[:month]'=>'Blog/archive',

[:month]变量用[ ]包含起来后就表示该变量是路由匹配的可选变量。

以上定义路由规则后,下面的URL访问地址都可以被正确的路由匹配:

http://serverName/index.php/blog/2015
http://serverName/index.php/blog/2015/12

可选参数只能放到路由规则的最后,如果在中间使用了可选参数的话,后面的变量都会变成可选参数。

完全匹配

  规则匹配检测的时候只是对URL从头开始匹配,只要URL地址包含了定义的路由规则就会匹配成功,如果希望完全匹配,可以在路由表达式最后使用$符号。

动态注册

路由定义采用\think\Route类的rule方法注册,通常是在应用的路由配置文件application/route.php进行注册,格式是:

Route::rule(‘路由表达式’,’路由地址’,’请求类型’,’路由参数(数组)’,’变量规则(数组)’);

ThinkPHP5.0的路由规则定义是从根目录开始,而不是基于模块名的。

注意,路由命名标识必须唯一,定义后可以用于URL的快速生成。

注意:请求类型参数必须大写。

如果要定义get和post请求支持的路由规则,也可以用:

Route::get('new/:id','News/read'); // 定义GET请求路由规则
Route::post('new/:id','News/update'); // 定义POST请求路由规则
Route::put('new/:id','News/update'); // 定义PUT请求路由规则
Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
Route::any('new/:id','News/read'); // 所有请求都支持的路由规则
Route::rule('new/:id','News/read','GET|POST');

值得注意的是通过不同请求方式访问同一路由地址可以制定不同实际位置

参考

路由

支持原创

码文不易,希望支持,谢谢->支持原创

微信支付微信支付

再次感谢,大家对本人的支持。

文章来源: thinkphp学习——路由学习

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:thinkphp学习——路由学习