简单起见,我们还可以把变量规则统一定义,例如:
return [
// 全局变量规则定义
'__pattern__' => [
'name' => '\w+',
'id' => '\d+',
'year' => '\d{4}',
'month' => '\d{2}',
],
// 路由规则定义
'blog/:id' => 'blog/get',
'blog/:name' => 'blog/read',
'blog-<year>-<month>' => 'blog/archive',
];
在__pattern__中定义的变量规则我们称之为全局变量规则,在路由规则里面定义的变量规则我们称之为局部变量规则,如果一个变量同时定义了全局规则和局部规则的话,当前的局部规则会覆盖全局规则的,例如:
return [
// 全局变量规则
'__pattern__' => [
'name' => '\w+',
'id' => '\d+',
'year' => '\d{4}',
'month' => '\d{2}',
],
'blog/:id' => 'blog/get',
// 定义了局部变量规则
'blog/:name' => ['blog/read', ['method' => 'get'], ['name' => '\w{5,}']],
'blog-<year>-<month>' => 'blog/archive',
];
URL生成
定义路由规则之后,可以通过Url类来方便的生成实际的URL地址(路由地址),针对上面的路由规则,我们可以用下面的方式生成URL地址。
// 输出 blog/thinkphp
Url::build('blog/read', 'name=thinkphp');
Url::build('blog/read', ['name' => 'thinkphp']);
// 输出 blog/5
Url::build('blog/get', 'id=5');
Url::build('blog/get', ['id' => 5]);
// 输出 blog/2015/05
Url::build('blog/archive', 'year=2015&month=05');
Url::build('blog/archive', ['year' => '2015', 'month' => '05']);
[注意]build方法的第一个参数使用路由定义中的完整路由地址
还可以使用系统提供的助手函数url来简化
url('blog/read', 'name=thinkphp');
// 等效于
Url::build('blog/read', 'name=thinkphp');
通常在模板文件中输出的话,可以使用助手函数,例如:
{:url('blog/read', 'name=thinkphp')}
如果我们的路由规则发生调整,生成的URL地址会自动变化
如果你配置了url_html_suffix参数的话,生成的URL地址会带上后缀,例如:
'url_html_suffix' => 'html',
那么生成的URL地址 类似
blog/thinkphp.html blog/2015/05.html
如果你的URL地址全部采用路由方式定义,也可以直接使用路由规则来定义URL生成,例如:
url('/blog/thinkphp');
Url::build('/blog/8');
Url::build('/blog/archive/2015/05');
生成方法的第一个参数一定要和路由定义的路由地址保持一致,如果你的路由地址比较特殊,例如使用闭包定义的话,则需要手动给路由指定标识,例如:
// 添加hello路由标识
Route::rule(['hello','hello/:name'], function($name){
return 'Hello,'.$name;
});
// 根据路由标识快速生成URL
Url::build('hello', 'name=thinkphp');
// 或者使用
Url::build('hello', ['name' => 'thinkphp']);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
ThinkPHP整合datatables实现服务端分页的示例代码下面小编就为大家分享一篇ThinkPHP整合datatables实现服务端分页的示例代码,具有很好的参考价值,希望对大家有所帮
thinkphp3.2.0 setInc方法 源码全面解析下面小编就为大家分享一篇thinkphp3.2.0 setInc方法 源码全面解析,具有很好的参考价值,希望对大家有所帮助。一起跟
tp5(thinkPHP5)操作mongoDB数据库的方法这篇文章主要介绍了tp5(thinkPHP5)操作mongoDB数据库的方法,结合实例形式简单分析了mongoDB数据库及thinkPHP5连接、查询Mo
在云虚拟主机部署thinkphp5项目的步骤详解thinkphp官网在去年的时候发布了tp的颠覆版本thinkphp5,tp5确实比之前的版本好用了很多,那么下面这篇文章就来给大家
Thinkphp5行为使用方法汇总这篇文章主要介绍了Thinkphp5行为使用方法汇总,需要的朋友可以参考下
thinkphp5 加载静态资源路径与常量的方法这篇文章主要介绍了thinkphp5 加载静态资源路径与常量的方法的相关资料,需要的朋友可以参考下