HTTP请求

Cookies

查找请求的点子

method格局将回来HTTP请求的法门。你也可以动用isMethod办法来开展http请求方式的格外效验:

$method = $request->method();

if ($request->isMethod('post')) {
  //
}

获取输入的值

您可以通过Illuminate\Http\Request实例的一对主意来方便的获取用户的输入值.而且你并不须要去关怀用户所使用的HTTP请求格局,你能够经过input办法赢得具有请求方式的值:

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

您也可以传递第四个参数到input方法,若是该值并不设有于请求中,将作为默许值重返:

$name = $request->input('name', 'Sally');

当表单提交的片段输入值是数组时,你能够行使.操作符来访问请求中的数组值:

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

$names = $request->input('products.*.name');

赢得旧输入

你能够拔取old方法来赢得上一次呼吁所闪存的用户请求:

$username = $request->old('username');

laravel提供了大局old扶助方法。你也可以在blade模板中拔取该形式,倘使上次恳请未闪存该输入,则会重返null:

<input type="text" name="username" value="{{ old('username') }}">

获取上传的文本

您能够通过Illuminate\Http\Requestfile办法来做客上传的文本。该方法会重返2个Symfony\Component\HttpFoundation\File\UploadedFile类的实例,它屡次三番自SplFileInfo,提供了多样与公事交互的方法:

$file = $request->file('photo');

您可以应用hasFile格局来判定文件在伸手中是还是不是存在:

if ($request->hasFile('photo')) {
  // 
}

证实文件是不是上传成功

您能够采纳isValid格局来证实文件上传的进度中是否出错:

if ($request->file('photo')->isValid()) {
  //
}

得到具有的输入值

您可以行使all格局来赢得具有的用户输入值,
该办法再次来到包涵所有用户值的数组:

$input = $request->all();

赢得输入值

走访请求

为了通过正视注入能够有利于的得到http请求实例,你应有在控制器的构造函数或许控制函数中写入类型注明Illuminate\Http\Request。当前呼吁的实例会自动的从劳动容器中流入:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller {
  public function store (Request $request) {
    $name = $request->input('name');
  }
}

万一您的控制器方法也亟需接受来自路由的参数,那么您要求在展开看重注入的参数之后添加要接收的参数。例如,你的路由是那般定义的:

Route::put('user/{id}', 'UserController@update');

那就是说你应当先注解器重注入Illuminate\Http\Reqeust,然后再按序的传递路由参数:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller {
  public function update (Request $request, $id) {
    // 
  }
}

认清输入值是还是不是留存

你可以运用has办法来判定,请求中是还是不是带有了用户的有个别输入值,倘使该值不是空的字符串,那么has艺术就会回到true:

if ($request->has('name')) {
  //
}

基础的乞求音讯

Illuminate\Http\Request的实例为您的采纳提供了两种反省HTTP请求的办法,它继续自Symfony\Component\HttpFoundation\Request。那里列举了一部分常用的主意:

得到JSON请求的输入值

您一样能够采用input方法来做客json请求,只要json请求被安装了不易的请求头
Content-Type: application/json, 那么你就足以行使 .
语法来深刻走访json中的数组:

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

闪存输入到会话接着跳转

壹个常用的气象就是你需求连同用户的输入一起回来到上一页中,那么您能够动用withInput链式方法:

return redirect('form')->withInput();

return redirect('form')->withInput($request->except('password'));

找寻请求的U奇骏I

path办法重回请求的U奥迪Q3I.所以,当呼吁的靶子地点是http://domain.com/foo/bar时,path措施将回来foo/bar:

$uri = $request->path();

is方式允许你来效验所请求的U君越I是还是不是匹配所提供的格局。你可以应用
*字符来作为通配符:

if ($request->is('admin/*')) {
  //
}

如果您想赢得请求的共同体路径,那么你可以选取 urlfullUrl 方法:

// Without Query String...

$url = $request->url();

// With Query String...

$url = $request->fullUrl();

您也可以在获取完整请求路径的同时伸张请求的参数消息,例如,假设请求的靶子是
http://domain.com/foo,
下边的主意将赶回http://domain.com/foo?bar=baz:

$url = $request->fullUrlWithQuery(['bar' => 'baz']);

文件

PSR-7 请求

PSR-7业内为http指定了有些信息接口,包罗请求和响应.假若您想博得PS智跑-7请求的实例,你必要先安装一些帮助库,laravel使用了
Symfon HTTP Bridge 组件来转换典型的laravel请求和响应为PSEscort-7包容的贯彻:

composer require symfony/psr-http-message-bridge

composer require zendframework/zend-diactoros

借使你安装了那个库,你就足以省略在你的路由或控制器中行使项目提醒来拿到PS大切诺基-7请求:

use Psr\Http\Message\ServerRequestInterface;

Route::get('/', function (ServerRequestInterface $request) {
  // 
});

若是路由或控制器再次来到的是PS卡宴-7响应的实例,
那么它会活动的转换为laravel响应实例。

旧的输入

laravel允许你在下一次呼吁时期保险该次请求的输入。那种特征在表单验证出错时越发有用,它可以使您复用上两次的伏乞进行活动的填写。借使你拔取了laravel的辨证服务,那么您不须求手动的调用它们,因为laravel内置的认证机制会自行的调用它们。

其它文件措施

UploadedFile还有其余许多可用的格局,你可以查看
该类的API文档
来了然越多.

拿到部分输入值

你能够利用only或者except方法来赢得部分输入值,
这七个主意都吸纳一个独门的数组恐怕动态的参数列表:

$input = $request->only(['username', 'password']);

$input = $request->only('username', 'password');

$input = $request->except(['credit_card']);

$input = $request->except('credit_card');

举手投足上传的文件

你可以接纳move措施来将上传的文本从临时目录中迁移到指定的目录中:

$request->file('photo')->move($destinationPath);

$request->file('photo')->move($destinationPath, $fileName);

在响应中附加3个新的cookie

laravel提供了二个大局的cookie协助方法用来生成一个Symfony\Component\HttpFoundation\Cookie实例,该实例能够被Illuminate\Http\Response实例的withCookie附加:

$response = new Illuminate\Http\Response('Hello World');

$response->withCookie('name', 'value', $minutes);

return $response;

你可以利用cookie方法来创制三个长达5年的长cookie,它须要你采纳不带参数的cookie资助方法直接调用forever方法:

$response->withCookie(cookie()->forever('name', 'value'));

从呼吁中检索cookie

在laravel中保有的cookie在被成立时都会透过1个认证码举办签证加密,那就意味着laravel会验证客户端对cookie的修改.你可以使用Illuminate\Http\Request实例的cookie主意来收获cookie值:

$value = $request->cookie('name');

json,动态属性

您可以经过Illuminat\Http\Request的实例的动态属性来博取用户的输入值.如若您的应用表单中存在name字段,你可以通过上面的格局来得到该请求字段:

$name = $request->name;

当使用动态属性时,laravel会首先查找请求中是或不是带有该值,然后才会招来路由中的参数.

闪存输入到会话

Illuminate\Http\Request实例的flash方法会闪存当前恳请的输入到会话中,那样可以使利用在经受用户的下次请求时进行复用:

$request->flash();

你也足以利用flashOnlyflashExcept 方法来闪存部分请求输入到会话:

$request->flashOnly(['username', 'email']);

$request->flashExcept('password');

相关文章

网站地图xml地图