Laravel 5.4 官方文档摘记:请求实例

来源:互联网 发布:抗风柱设计软件 编辑:程序博客网 时间:2024/06/07 01:56

请求

请求实例

比如一个用户发送一个如下的请求:

Route::patch('user/','UserController@update');

那么在控制器中如何获取用户的输入呢?就可以结合上一篇博客中的方法参数设置,将请求实例传入方法中。请求实例的传入方式如下:

<?phpnamespace App\Http\Controllers;//这个就是请求实例use Illuminate\Http\Request;class UserController extends Controller{    /**     * 这里将请求实例传递进入函数     * @param Request $request     * @return Response     */    public function store(Request $request)    {        //假设提交过来的表单中有一个name字段,这样就可以获取该字段了        $name=$request->name;    }}

当然,不止可以在控制器中实例化请求类,在路由中也可以实例化请求类,但是如何设置该请求类的命名空间,那就再说了。

Route::get('user/{id}',function(Request $request){    $id=$request->id;});

实例中方法介绍

下面假设请求的URL完整地址是:

http://www.lucifer.morning.star.com.cn/users/id/1/name/angle

路由设置为:

Route::get(‘users/id{id}/.name/{name}’,’UserController@show’)

path()

调用方式是:$request->path()
输出结果是:users/id/1/name/angle

is()

调用方式:$request->is('users/*')
输出结果:true/false

url()

调用方式:$request->url()
输出结果:users

fullUrl()

调用方式:$request->fullUrl()
输出结果:users/id/1/name/angle

method()

调用方式:request->method()
输出结果:show()

isMethod()

调用方式:$request->idMethod('show')
输出结果:true/false

all()

调用方式:$request->all()
输出结果:获取请求全部信息

input(‘key’[,’default value’])

调用方式:$request->input('name','default value')
输出结果:当name字段存在时,输出name的原始值,当name字段不存在时,输出该函数的第二个参数default value

另外在.表示数组,下面假设传递过来的表单内容如下:

$form=[    'name'=>['John','Mike','Kitty']];

那么获取name数组下的第二个参数可以使用下面的形式:

//注意,数组的下标是0开始的$name=$request->input("name.1");

当你访问的是JSON格式的数据的时候,你可以这样读取其中的值:

$name=$request->input('name.firstName');

only()

调用方式:$request->only(['fieldName1','fieldName2']
输出结果:字段fieldName1fieldName2字段的值

expect()

only很像

intersect()

调用方式:$request->intersect(['fieldName1','fieldName2'])
输出结果:这两个字段存在时,才会进行读取

has()

调用方式:$request->has('name')
输出结果:true/false

flash()

调用方式:$request->flash()
输出结果:就是将该$request缓存起来,但是该缓存仅有一次有效

old()

调用方式:$request->old()
输出结果:获取上一次$request实例

调用方式:$request->cookie('name')
输出结果:设置cookie

file()

调用方式:$request->file('fileName')
输出结果:Illuminate\Http\UploadedFile类的一个实例

跟这个配套使用的还有另一个方式:isValid()

//判断该文件是否正确上传到服务器了$request->file('fileName')->isValid()

hasFile()

调用方式:$request->hasFile('fileName')
输出结果:判断该文件是否存在,可以和上面的isValid配套使用

extension()

调用方式:$request->fileName->extension()
输出结果:获取上传文件的扩展名

store()

使用该方法可以将文件保存,注意!!!这里的fileName2是文件的完整名称路径。

调用方式:$request->fileName->store('fileName2'[,'Disk_Name'])
输出结果:保存文件的路径

storeAs()

调用方式:$request->fileName->saveAs('fileName2','fileSaveName'[,'Disk_Name'])
输出结果:就是可以指定保存文件的文件名,否则会像使用store时一样,保存的文件名是随机生成的

 重定向时同时传递请求实例

//直接调用withInput()函数将请求实例作为参数一同传递过去return redirect()->withInput();//删除其中的某些字段return redirect()->withInput($request->expect('password'));