本文档侧重实战操作,具体理论、细节可以参看官方手册 《ThinkPHP5.1完全开发手册》

所有项目源码都在Github仓库,代码按天创建分支

本系列文档系黑鱼原创,未经授权,请勿转载!

第六天 ThinkPHP5路由实验(二)路由分组实验
黑鱼
发布日期: 2019-01-30 10:24:31
{{ fav.hits}} / {{ fav.ispage}}

路由分组功能允许把相同前缀的路由定义合并分组,这样可以简化路由定义,并且提高路由匹配的效率,不必每次都去遍历完整的路由规则 ?点此查看路由演示

使用Route类的group方法进行注册,给分组路由定义一些公用的路由设置参数,使用规范如下

Route::group('分组名(字符串)或者分组路由参数(数组)','分组路由规则(数组或者闭包)');
Route::group('group',?function?()?{
????Route::get('read/:id',?'group/read');
????Route::get('write/:id',?'group/write');
????Route::get('del/:id',?'group/del');
????Route::get('index/:id',?'group/index');
})->ext('html')->pattern(['id'?=>?'d+']);

使用前缀 prefix

Route::group('group',?function?()?{
????Route::get('read/:id',?'read');
????Route::get('write/:id',?'write');
????Route::get('del/:id',?'del');
????Route::get('index/:id',?'index');
})->prefix('group/')->ext('html')->pattern(['id'?=>?'d+']);

使用前缀虽然可以简化路由书写,但在使用时也产生一些局限,比如路由到 group/index应需要写成

url('index')

而不是之前的

url('group/index')

很明显,冲突已经在所难免,解决的办法是使用别名

Route::group('group',?function?()?{
????Route::get('read/:id',?'read')->name('group_read');;
????Route::get('write/:id',?'write')->name('group_write');;
????Route::get('del/:id',?'del')->name('group_del');;
????Route::get('index/:id',?'index')->name('group_index');;
})->prefix('group/')->ext('html')->pattern(['id'?=>?'d+']);

但这样写,说好的简化去哪里了……,当然,使用别名还是有其他好处的。

相关评论?文明上网,理性发言

发布评论

支持作者

  • 感谢您的支持,您的捐赠将用于:
      1、《沉语多语言集群系统》的进一步开发
      2、本站服务器等软硬件的费用支出
      3、ThinkPHP5.1教程的编写
      4、《沉语多语言集群系统》向TP5.1的升级工作