Laravel中获取路由参数Route Parameters的五种方法示例


Posted in PHP onSeptember 29, 2017

前言

大家都知道Laravel 获取路由参数的方式有很多,并且有个小坑,现汇总如下,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

假设我们设置了一个路由参数:

/**
* 定义路由参数名称分别为: param1,param2
*/
Route::get('/{param1}/{param2}', 'TestController@index');

现在我们访问 http://test.dev/1/2

在 TestController 中:

/**
* 路由参数获取方法
*
* @param Illuminate\Http\Request $request 依赖注入 Request 实例,放在参数中什么位置都可以自动加载
* @param mixed $arg2 要获取的路由参数
* @param mixed $arg1 要获取的路由参数
*/

public function index(Request $request, $arg2, $arg1)
{

 /**
 * 方法一:按照 URL 中路由参数先后顺序来获取
 * 注意:此种方式有个小坑,获取的值只与顺序有关,与名称无关
 */
 echo $arg2; //结果为 1 ,因为 $arg2 在第一位,获取的是第一个路由参数 param1 的值
 echo $arg1; //结果为 2 ,因为 $arg1 在第二位,获取的是第二个路由参数 param2 的值

 /**
 * 方法二:按照路由参数名称来获取
 * 注意:此处名称是 Route 中定义的参数名,非上面方法中的参数名 
 */
 $request->route('param1');  //结果为 1 ,获取的是第一个路由参数
 $request->route('param2');  //结果为 2 ,获取的是第二个路由参数

 /**
 * 方法三:使用 request() 辅助函数来获取,效果同方法二
 */
 request()->route('param1');  //结果为 1 ,如果不带路由参数名则返回当前的Route对象
 request()->route('param2');  //结果为 2 ,如果不带路由参数名则返回当前的Route对象

 /**
 * 方法四:使用 Route Facade
 */
 \Route::input('param1');  //结果为 1 ,该方法必须带路由参数名
 \Route::input('param2');  //结果为 2 ,该方法必须带路由参数名

 /**
 * 方法五:使用 Illuminate\Http\Request 实例动态属性
 */
 $request->param1; //结果为 1 ,Laravel 5.4+ 可用
 $request->param2; //结果为 2 ,Laravel 5.4+ 可用
  
 // 或者
 request()->param1; //结果为 1 ,Laravel 5.4+ 可用
 request()->param2; //结果为 2 ,Laravel 5.4+ 可用
  
 //或者
 request('param1'); //结果为 1 ,Laravel 5.4+ 可用
 request('param2'); //结果为 2 ,Laravel 5.4+ 可用
  
 /**
 * 注意:Laravel 在处理动态属性的优先级是,先从请求的数据(POST/GET)中查找,没有的话再到路由参数中找。
 * 例如:URL : http://test.dev/1/2?param1=a¶m2=b
 * $request->param1; request()->param1; request('param1'); //结果为 a
 * $request->param2; request()->param2; request('param2'); //结果为 b
 */
}

以上就是 Laravel 获取路由参数的 5 种方法。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
PHP 源代码压缩小工具
Dec 22 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
php中拷贝构造函数、赋值运算符重载
Jul 25 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
php实现简单文件下载的方法
Jan 30 PHP
php生成短域名函数
Mar 23 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
Aug 17 PHP
PHP网页安全认证的实例详解
Sep 28 #PHP
php二维码生成以及下载实现
Sep 28 #PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 #PHP
PHP面向对象多态性实现方法简单示例
Sep 27 #PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 #PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 #PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 #PHP
You might like
PHP学习之数组的定义和填充
2011/04/17 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
Javascript 对象的解释
2008/11/24 Javascript
js类型检查实现代码
2010/10/29 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
Python实现多进程共享数据的方法分析
2017/12/04 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
如何开发一个JQuery插件
2016/07/28 面试题
高职助产应届生自荐信
2013/09/24 职场文书
汽车销售求职自荐信
2013/10/01 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
合同协议书格式
2014/04/18 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
孙振耀退休感言
2015/08/01 职场文书
Python Socket编程详解
2021/04/25 Python
python中redis包操作数据库的教程
2022/04/19 Python