获取请求的实例
通过 Facade
Request 这个 facade 可以让我们得到绑定在容器里的当前这个请求。比如:
$name = Request::input('name');
注意,如果你在一个命名空间里,你需要在类文件的顶部使用 use Request; 这条声明来导入 Request 这个 facade 。
通过依赖注入
要通过依赖注入得到当前 HTTP 请求的实例,需要在你的控制器构造函数或者方法里 type-hint 类。当前请求的这个实例会被 Service Container 自动注入进来。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Routing\Controller; class UserController extends Controller { /** * 保存新的用户 * * @param Request $request * @return Response */ public function store(Request $request) { $name = $request->input('name'); // } }
如果你的控制器方法期待来自路由参数上的 input(值),可以在其它的依赖的后面列出这些路由参数:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Routing\Controller; class UserController extends Controller { /** * Store a new user. * * @param Request $request * @param int $id * @return Response */ public function update(Request $request, $id) { // } }
检索输入
检索输入的值
使用几个简单的方法,你可以得到在 Illuminate\Http\Request 实例上的用户的所有的输入。你不用管请求使用的 HTTP 动作是什么,可以使用同样的方法来得到所有的输入的值。
$name = Request::input('name');
在缺少输入值的时候去获取到默认值
$name = Request::input('name', 'Sally');
确定一个输入值是否出现
if (Request::has('name')) { // }
得到请求里的所有输入的值
$input = Request::all();
得到请求里的部分输入值
$input = Request::only('username', 'password'); $input = Request::except('credit_card');
如果输入里面包含数组类型的值,可以使用点的形式访问到这个数组里的值:
$input = Request::input('products.0.name');
以前输入的值
Laravel 会存储在一次请求与下一次请求之间的输入值。比如,你可能需要在验证了输入错误之后重新填写表单。
把输入值闪存到会话里