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
php桌面中心(一) 创建数据库
Mar 11 PHP
常用的php对象类型判断
Aug 27 PHP
php xml实例 留言本
Mar 20 PHP
批量修改RAR文件注释的php代码
Nov 20 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
PHP生成指定长度随机数最简洁的方法
Jul 14 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
基于swoole实现多人聊天室
Jun 14 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 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
laravel框架使用极光推送消息操作示例
Feb 15 #PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 #PHP
You might like
PHP安装全攻略:APACHE
2006/10/09 PHP
PHP 模板高级篇总结
2006/12/21 PHP
php header示例代码(推荐)
2010/09/08 PHP
基于php-fpm的配置详解
2013/06/03 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
php实现的漂亮分页方法
2014/04/17 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
再谈JavaScript线程
2015/07/10 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python获取邮件地址的方法
2015/07/10 Python
python的concat等多种用法详解
2018/11/28 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
详解Python self 参数
2019/08/30 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
利用Python绘制Jazz网络图的例子
2019/11/21 Python
keras 权重保存和权重载入方式
2020/05/21 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
酒店出纳岗位职责
2013/12/29 职场文书
企业管理标语
2014/06/10 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS