LaravelFramework之HowPart1.接收请求1.1Request的基本使用要通过依赖注入获取当前HTTP请求实例,需要在controller上引入Illuminate\Http\Request类。传入的请求实例将由服务容器自动注入。input('name');}//}}1.2RequestRouting部分公共方法//GET方法请求,输出结果对应部分oneRoute::get('test/request','App\Http\Controllers\TestController@testGet');//POST方法请求,输出结果对应PartTwoRoute::post('test/request','App\Http\Controllers\TestController@testPost');Controller部分path();//打印输出:"test/request"//获取请求的url(不带get请求参数)$request->url();//打印输出:"http://127.0.0.1:8000/test/request"//获取完整的url(带get请求参数)$request->fullUrl();//打印输出:"http://127.0.0.1:8000/test/request?name=bert"//获取请求请求方法$request->method();//打印输出:“GET”//或请求端口$request->getPort();//printoutput:8000}//第二部分:forurl(Post|http://127.0.0.1:8000/test/request?company=Tencent&name=bert&finger=king)/***form-dataparameters:*name=kinra*option[]=A*option[]=B*option[]=C*key=null*/publicfunctiontestPost(Request$request){//获取请求路径dump($request->path());//打印输出:"test/request"//获取请求的url(不带参数)dump($request->url());//打印输出:"http://127.0.0.1:8000/test/request"//获取完整的url(带参数)dump($request->fullUrl());//打印输出:"http://127.0.0.1:8000/test/request?company=anflk&finger=king&name=bert"//获取请求方法dump($request->method());//打印输出:“POST”//获取请求接口dump($request->getPort());//打印输出:8000//获取格式dump($request->format());//打印输出:"html"//获取请求参数转储($请求->查询());//打印输出:["company"=>"Tencent","name"=>"bert","finger"=>"king"]dump($request->input());//打印输出:["name"=>"kinra","option"=>[0=>"A",1=>"B",2=>"C"],"key"=>null,"公司"=>"腾讯","手指"=>"大王"]dump($request->all());//打印输出:["name"=>"kinra","option"=>[0=>"A",1=>"B",2=>"C"],"key"=>null,"company"=>"Tencent","finger"=>"king"]//获取一个请求参数的值dump($request->input('company'));//打印输出:“腾讯”dump($request->company);//打印输出:“腾讯”dump($request->input('name'));//打印输出:“kinra”dump($request->query('name'));//打印output:"bert"//获取请求参数为Array,其中一个值dump($request->input('option.0'));//打印输出:“A”//判断输入值是否存在//Ⅰ.has判断当前请求是否包含指定值dump($request->has('name'));//打印输出:truedump($request->has('nam'));//打印输出:false//Ⅱ.当给定一个数组时,has会判断指定的值是否全部存在dump($request->has(['name','company']));//打印输出:truedump($request->has(['name','email']));//打印输出:false//Ⅲ.hasAny方法将有一个指定的值如果存在,则返回truedump($request->hasAny(['name','email']));//打印输出:truedump($request->hasAny(['pwd','email']));//打印输出:false//Ⅳ.如果要判断一个值是否存在于请求中且不为空,可以使用filled方法dump($request->filled('name'));//打印输出:truedump($request->filled('key'));//Printout:false}}注意:处理包含数组的表单时,可以使用.运算符访问数组的数据。输入法可以从整个请求体中获取数据(包括查询字符串),而查询方法只从查询字符串中获取输入值。从上面两种方法可以看出区别。转储($请求->输入('名称'));//打印输出:“kinra”dump($request->query('name'));//打印输出:“bert”与POST请求参数同名一个GET请求参数,其值将被POST请求中的同名参数覆盖。1.3获取陈旧数据Laravel允许你在请求之间持久化数据。在验证错误后重新填写表单时,此功能很有用。使用旧数据的前提:将上一个(pre)请求的输入刷入session,那么上一个请求之后的当前(this)请求可以通过old()函数得到上一个(pre)请求的输入,下一个(next)请求无法获取到上一个(pre)请求的输入,但是如果这个(this)input有输入并且被闪现,则下一个(next)请求可以获取到这个(this)request的输入。//将此请求的输入闪存到会话中,以供下一个请求使用。$request->flash();//所有的输入数据都被写入会话$request->flashOnly(['name','email']);//只有名字和电子邮件被闪现到会话$request->flashExcept(['name','email']);//将name和email以外的输入数据刷入session进行重定向时,可以使用withInput()进行链式调用,此时不需要调用$request->flash();//控制器中的一个函数。publicfunctiontestSession(Request$request){//$request->flash();返回重定向('测试/请求')->withInput();}//上面的函数等价于下面的函数publicfunctiontestSession(Request$request){$request->flash();返回重定向('测试/请求');}获取最后一次flash到session的输入数据$request->old();//获取上一次flash到session的所有输入Data,返回类型:array$request->old('username');//获取上次请求输入的用户名的值
