本文档侧重实战操作,具体理论、细节可以参看官方手册 《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的升级工作