laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析


Posted in PHP onFebruary 18, 2020

本文实例讲述了laravel框架路由分组,中间件,命名空间,子域名,路由前缀。分享给大家供大家参考,具体如下:

laravel的路由分组,就是把一些具有相同特征的路由进行分组,比如一些路由需要进行验证,一些路由有共同的前缀,一些路由有相同的控制器命名空间等。

这样把路由组合在一起,方便管理,维护性更好。

Route::group([], function () {
  Route::get('user/list', function () {});
  Route::get('user/info', function () {});
});

上面的代码把两个路由归为一组,但并没有应用任何相同特征,这样的意义并不大。

一、中间件

为一组路由设置相同的中间件,可设置多个中间件,执行顺序依数组中的顺序来运行。

Route::middleware(['auth'])->group(function () {
  //使用auth中间件
  Route::get('user/list', function () {});
  //使用auth中间件
  Route::get('user/info', function () {});
});

二、路由前缀

有些路由有共同的前缀,我们可以为这些路由设置一个共同的前缀。

Route::prefix('user')->group(function () {
  //处理/user/list
  Route::get('list', function () {});
  //处理/user/info
  Route::get('info', function () {});
});

三、路由名称前缀

为路由设置名称时,我们想为同组下的路由名称都加上相同的名称前缀。

Route::name('user.')->prefix('user')->group(function () {
  //处理/user/list,并命名为user.list
  Route::get('list', function () {})->name('list');
  //处理/user/info,并命名为user.info
  Route::get('info', function () {})->name('info');
});

四、子域名

针对有多商家的场景,某些家商有自已独立的子域名,这时候我们需要针对子域名来进行路由分组。

Route::domain('{shop}.tmall.com')->group(function () {
  //处理xxx.tmall.com/orders/xxx
  //$shop参数始终是分组路由的第一个参数
  Route::get('orders/{id}', function ($shop, $id) {
  });
  //处理xxx.tmall.com/products/xxx
  //$shop参数始终是分组路由的第一个参数
  Route::get('products/{id}', function ($shop, $id) {
  });
});

五、命名空间

当我们绑定路由到控制器方法时,如果没有显示指定控制器的命名空间,默认为 App\Http\Controllers。

如果分组路由需要绑定位于该命名空间下的子命名空间,如:App\Http\Controllers\Orders。则可为该分组路由设置一个命名空间。

Route::namespace('Orders')->prefix('orders')->group(function () {
  //处理/orders/delete
  //并绑定到App\Http\Controllers\Orders下的DeleteController控制器的index方法
  Route::post('delete', 'DeleteController@index');
  //处理/orders/add
  //并绑定到App\Http\Controllers\Orders下的AddController控制器的index方法
  Route::post('add', 'AddController@index');
});

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP+MYSQL的文章管理系统(一)
Oct 09 PHP
一个数据采集类
Feb 14 PHP
php学习之运算符相关概念
Jun 09 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
解析argc argv在php中的应用
Jun 24 PHP
php对数组排序代码分享
Feb 24 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
PHP PDOStatement::debugDumpParams讲解
Jan 30 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
Laravel 框架返回状态拦截代码
Oct 18 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 #PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 #PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 #PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 #PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 #PHP
php 函数中静态变量使用的问题实例分析
Mar 05 #PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 #PHP
You might like
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
php测试kafka项目示例
2020/02/06 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
python实现倒计时的示例
2014/02/14 Python
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
python里大整数相乘相关技巧指南
2014/09/12 Python
Python中的ConfigParser模块使用详解
2015/05/04 Python
Python中turtle作图示例
2017/11/15 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
数学教师个人工作总结
2015/02/06 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
天那边观后感
2015/06/09 职场文书
反邪教教育心得体会
2016/01/15 职场文书
Redis基本数据类型String常用操作命令
2022/06/01 Redis