HTTP请求

访问请求

为通过依赖注入能够有利于之拿走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) {
    // 
  }
}

基础之请信息

Illuminate\Http\Request的实例为卿的采取提供了余反省HTTP请求的艺术,它继续自Symfony\Component\HttpFoundation\Request。这里列举了有的常用的方式:

寻找请求的URI

path措施返回请求的URI.所以,当呼吁的靶子地址是http://domain.com/foo/bar时,path艺术以赶回foo/bar:

$uri = $request->path();

is方法允许而来效验所请求的URI是否匹配所提供的模式。你可以采用
*字符来作为连接配符:

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']);

寻找请求的法子

method主意以回HTTP请求的办法。你啊得采用isMethod法来拓展http请求方式的相当效验:

$method = $request->method();

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

PSR-7 请求

PSR-7专业吗http指定了部分音讯接口,包括要与响应.如果您想取得PSR-7请求的实例,你得事先安装有支撑库,laravel使用了
Symfon HTTP Bridge 组件来换典型的laravel请求与应也PSR-7兼容的实现:

composer require symfony/psr-http-message-bridge

composer require zendframework/zend-diactoros

设你安装了这些库,你尽管可省略以您的路由或控制器中使用项目提示来取得PSR-7请求:

use Psr\Http\Message\ServerRequestInterface;

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

一旦路由或控制器返回的是PSR-7响应的实例,
那么它见面自动的更换为laravel响应实例。

得到输入值

获得输入的值

而可以经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');

得JSON请求的输入值

您平可以input方法来拜会json请求,只要json请求被装置了科学的恳求头
Content-Type: application/json, 那么您尽管得采取 .
语法来深切走访json中之数组:

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

判定输入值是否存在

公可以采用has措施来判断,请求中是否含有了用户之某个输入值,如果该值未是拖欠的字符串,那么has办法就是会回来true:

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

抱具有的输入值

君得下all法来博具有的用户输入值,
该方法返回包含有用户值的数组:

$input = $request->all();

得到有输入值

而可利用only或者except艺术来获取有输入值,
这半只章程还收下一个独自的数组或者动态的参数列表:

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

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

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

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

动态性

公可透过Illuminat\Http\Request的实例的动态性来取得用户的输入值.如果您的运用表单中存在name字段,你得透过下面的不二法门来获取该要字段:

$name = $request->name;

当用动态性时,laravel会首先查找请求中是否含有该值,然后才见面寻找路由于丁之参数.

老的输入

laravel允许而以产一致软呼吁中保持该次请求的输入。这种特点在表单验证出错时益有因此,它可使你复用上一样赖的呼吁进行机动的填写。如果你下了laravel的验证服务,那么你不欲手动的调用它们,因为laravel内置的说明机制会自行的调用它们。

闪存输入到会话

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

$request->flash();

若也可行使flashOnlyflashExcept 方法来闪存部分要输入到讲话:

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

$request->flashExcept('password');

闪存输入到会话接着跳转

一个常用的景就是是您待连同用户的输入一起返回到上一样页中,那么你得行使withInput链式方法:

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

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

得旧输入

您得用old道来取上同一坏呼吁所闪存的用户要:

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

laravel提供了全局old帮忙方法。你吧足以当blade模板被采用该方式,如果上次要未闪存该输入,则会回来null:

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

Cookies

起央中检索cookie

每当laravel中有所的cookie在叫创造时都见面通过一个认证码进行签证加密,这就算表示laravel会验证客户端对cookie的修改.你得应用Illuminate\Http\Request实例的cookie主意来获取cookie值:

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

在应中附加一个新的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'));

文件

获得上传的文本

卿可以经Illuminate\Http\Requestfile术来做客上传的文书。该方法会返回一个Symfony\Component\HttpFoundation\File\UploadedFile接近的实例,它延续自SplFileInfo,提供了强与公事交互的点子:

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

汝可以下hasFile方法来判定文件于恳求被是不是在:

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

证实文件是否上污染成

君可利用isValid法来说明文件上传的长河被是不是出错:

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

移动上传的文书

而可行使move措施来将上传的公文由即目录中迁移到指定的目中:

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

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

旁文件措施

UploadedFile尚出任何不少可用之点子,你可以查阅
该类的API文档
来了解又多.

相关文章

网站地图xml地图