How 局部
1. 接管申请
1.1 Request 根本应用
要通过 依赖注入 获取以后 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');
//
}
}
1.2 Request 的罕用办法
路由局部
// GET 形式申请,输入后果对应 Part one
Route::get('test/request', 'App\Http\Controllers\TestController@testGet');
// POST 形式申请,输入后果对应 Part Two
Route::post('test/request', 'App\Http\Controllers\TestController@testPost');
控制器局部
<?php
use Illuminate\Http\Request;
class TestController extends Controller
{
// Part One: 针对 url(GET | http://127.0.0.1:8000/test/request?name=bert)public function testGet(Request $request)
{
// 获取申请门路(路由中的 uri 局部)$request->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 申请形式
$request->method(); // 打印输出:"GET"
// 或申请端口
$request->getPort(); // 打印输出:8000}
// Part Two: 针对 url(Post | http://127.0.0.1:8000/test/request?company=Tencent&name=bert&finger=king)/**
* form-data 参数:* name=kinra
* option[]=A
* option[]=B
* option[]=C
* key=null
*/
public function testPost(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"
// 获取申请参数。dump($request->query()); // 打印输出:["company" => "Tencent", "name" => "bert", "finger" => "king"]
dump($request->input()); // 打印输出:["name" => "kinra", "option" => [0 => "A", 1 => "B", 2 => "C"], "key" => null, "company" => "Tencent", "finger" => "king"]
dump($request->all()); // 打印输出:["name" => "kinra", "option" => [0 => "A", 1 => "B", 2 => "C"], "key" => null, "company" => "Tencent", "finger" => "king"]
// 获取某一申请参数的值
dump($request->input('company')); // 打印输出:"Tencent"
dump($request->company); // 打印输出:"Tencent"
dump($request->input('name')); // 打印输出:"kinra"
dump($request->query('name')); // 打印输出:"bert"
// 获取申请参数是数组,其中的某个值
dump($request->input('option.0')); // 打印输出:"A"
// 判断输出值是否存在
// Ⅰ. has 来判断以后申请中是否含有指定的值
dump($request->has('name')); // 打印输出:true
dump($request->has('namd')); // 打印输出:false
// Ⅱ. 当给定一个数组时,has 将会判断指定的值是否全副存在
dump($request->has(['name', 'company'])); // 打印输出:true
dump($request->has(['name', 'email'])); // 打印输出:false
// Ⅲ. hasAny 办法将会在指定的值有一个存在的状况下返回 true
dump($request->hasAny(['name', 'email'])); // 打印输出:true
dump($request->hasAny(['pwd', 'email'])); // 打印输出:false
// Ⅳ. 如果你想要判断一个值在申请中是否存在,并且不为空,能够应用 filled 办法
dump($request->filled('name')); // 打印输出:true
dump($request->filled('key')); // 打印输出:false
}
}
留神:
- 当解决蕴含数组的表单时,能够应用 . 运算符来拜访数组的数据
-
input
办法能够从整个申请体中获取数据(包含查问字符串), 而query
办法仅仅从查问字符串中获取输出值。从下面的这两个办法可看出区别。dump($request->input('name')); // 打印输出:"kinra" dump($request->query('name')); // 打印输出:"bert"
- 与 POST 申请参数同名的 GET 申请参数,其值会被 POST 申请的同名参数笼罩。
1.3 获取旧数据
Laravel 容许你在两次申请之间保持数据。这个个性在有效性校验出错后从新填充表单时十分有用。
-
应用旧数据的前提:上一次(pre)申请的输出被闪存到 session 中,那么紧接着上次申请的本次(this)request 申请,可通过 old() 函数获取上次(pre)申请的输出,下次(next)申请无奈获取上一次(pre)申请的输出,但如果本次(this)请入有输出且被闪存,则下次(next)申请能够获取本次(this)申请的输出。
// 将本次申请输出闪存到 session 中,供下次申请应用这些输出。$request->flash(); // 全副输出数据闪存到 session $request->flashOnly(['name', 'email']); // 只将 name、email 闪存到 session 中 $request->flashExcept(['name', 'email']); // 将除 name、email 以外的其余输出数据闪存到 session 中
-
重定向时可应用 withInput() 进行链式调用,此时无需再调用 $request->flash();
// 控制器中的一个函数。public function testSession(Request $request) {// $request->flash(); return redirect('test/request')->withInput();} // 下面函数等同于上面这个函数 public function testSession(Request $request) {$request->flash(); return redirect('test/request'); }
-
获取上次闪存到 session 的输出数据
$request->old(); // 获取上次闪存到 session 的全副输出数据,返回类型:数组 $request->old('username'); // 获取上次申请输出的 username 的值