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之数据库操作详解及乱码解决!
Jan 02 PHP
一个用php实现的获取URL信息的类
Jan 02 PHP
PHP 工厂模式使用方法
May 18 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
PHP框架性能测试报告
May 08 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
php多线程并发实现方法
Sep 30 PHP
PHP连接MySQL进行增、删、改、查操作
Feb 19 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
May 29 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
一个简单的PHP投票程序源码
2007/03/11 PHP
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
Python编写单元测试代码实例
2020/09/10 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
服务行业个人求职的自我评价
2013/12/12 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
甲午大海战观后感
2015/06/02 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android