PHP Laravel学习之HTTP请求参数获取

官方文档传送门:http://laravelacademy.org/post/7856.html


依赖

在A类中有B类的实例,则称A对B有一个依赖

依赖注入

在A类中获取到的B类的实例是通过外部传进来的这种就称作依赖注入

访问请求实例

在控制器中获取当前请求实例,只需要在构造方法或普通方法中对Illuminate\Http\Request 类进行依赖注入即可,具体实现如下:
在App\Http\Controllers\UserController.php控制器下的store方法进行依赖注入获取当前请求的name值

public function store(Request $request){
        $name = $request -> input('name');
        echo "$name";
    }

创建控制器路由访问该控制器下的store方法:

Route::get('store','UserController@store');

浏览器中输入:http://localhost:8000/store?name=12,结果如下:

获取到请求中的name

路由参数

如果还期望在控制器方法中获取路由参数,只需要将路由参数置于其它依赖之后即可,具体实现如下:
在App\Http\Controllers\UserController.php控制器中通过依赖注入获取路由里的参数
我们稍微对上述store方法和路由进行一下小小的修改:

//store方法修改为
public function store(Request $request,$id){
        $name = $request -> input('name');
        echo "name:$name  "."  id:$id";
    }
//web.app下路由修改为:
Route::get('store/{id}','UserController@store');

浏览器中输入http://localhost:8000/store/1?name=12,结果如下:

获取路由参数

通过路由闭包访问请求

这种情况就是直接在路由里通过注入Illuminate\Http\Request,在执行闭包函数的时候服务容器会自动注入输入请求,具体实现如下,

Route::get('re',function(Illuminate\Http\Request $request){
    $name = $request -> input('name');
    echo "$name";
});

在浏览器中输入:http://localhost:8000/re?name=12,结果如下:

闭包路由获取请求参数

请求路径 & 请求方法

Illuminate\Http\Request 继承自 Symfony\Component\HttpFoundation\Request 类,提供了多个方法来检测应用的 HTTP 请求,下面我们来演示其提供的一些获取请求路径和请求方式的方法:

获取请求路径

path方法将会返回请求的路径信息,如果请求URL是 http://localhost:8000/user/1,则 path 方法将会返回 user/1,具体实现如下:
路由如下:

Route::get("user/{id}",function(Illuminate\Http\Request $request){
    $path = $request -> path();
    echo $path;
});

访问上述路由结果如下:



is 方法允许你验证请求路径是否与给定模式匹配。该方法参数支持 * 通配符
修改上述路由如下:

Route::get("user/{id}",function(Illuminate\Http\Request $request){
    if($request->is('user/1')){
        echo '你的路径对了哦';
    }else{
        echo "你好像输错路径了哦";
    }
});

访问对的路径:http://localhost:8000/user/1


访问错的路径:http://localhost:8000/user/3

通配符*
修改路由里的闭包方法如下:

Route::get("user/{id}",function(Illuminate\Http\Request $request){
    if($request->is('user/*')){
        echo '你的路径对了哦';
    }else{
        echo "你好像输错路径了哦";
    }
});

路径一直都匹配;



获取请求URL

想要获取完整的 URL,而不仅仅是路径信息,可以使用请求实例提供的 url 或 fullUrl 方法, url 方法返回不带查询字符串的 URL,而 fullUrl 方法返回结果则包含查询字符串,具体实现如下:
依旧把Illuminate\Http\Request依赖注入到路由里:

Route::get('url',function(Illuminate\Http\Request $request){
    // 不包含查询字符串
    $url = $request -> url();
    echo "$url";
    // 包含查询字符串
   $url_with_query = $request->fullUrl();
   echo "</br> $url_with_query";
});

访问:http://localhost:8000/url?name=l 结果如下:

获取请求方法

method 方法将会返回 HTTP 请求方式。你还可以使用 isMethod 方法来验证 HTTP 请求方式是否匹配给定字符串,具体实现如下:

Route::get("mo",function(Illuminate\Http\Request $request){
    $method = $request->method(); // GET/POST
    echo "$method</br>";
    if($request->isMethod('post')){ 
        echo "POST提交";
    }else{
        echo "其他提交";
    }
});

访问:http://localhost:8000/mo 结果如下:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,562评论 18 139
  • 先说几句废话,调和气氛。事情的起由来自客户需求频繁变更,伟大的师傅决定横刀立马的改革使用新的框架(created ...
    wsdadan阅读 3,029评论 0 12
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,263评论 1 92
  • 访问请求实例 要通过依赖注入获取当前 HTTP 请求实例,需要在控制器的构造函数或方法中对 Illuminate\...
    伊Summer阅读 1,637评论 0 3
  • 笔者是一枚程序员,同时也是个美食爱好者,一直想用技术做点自己的事情,刚好最近开始研究逆向工程,实现下厨房作品自动点...
    Aprilsky阅读 2,017评论 0 9