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 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
实用函数5
Nov 08 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
php生成带logo二维码方法小结
Apr 08 PHP
php中namespace及use用法分析
Dec 06 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
PHP number_format函数原理及实例解析
Jul 14 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
laravel安装和配置教程
2014/10/29 PHP
PHP制作用户注册系统
2015/10/23 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
PHP getName()函数讲解
2019/02/03 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
JavaScript面象对象设计
2008/04/28 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
python ChainMap的使用和说明详解
2019/06/11 Python
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
项目经理聘任书
2014/03/29 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
农村文化活动总结
2014/08/28 职场文书
食品卫生管理制度
2015/08/06 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
Python实现打乒乓小游戏
2021/09/25 Python
PO模式在selenium自动化测试框架的优势
2022/03/20 Python
Python保存并浏览用户的历史记录
2022/04/29 Python
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers