获取请求输入
获取所有输入值
你可以使用 all
方法以数组格式获取所有输入值:
$input = $request->all();
获取单个输入值
使用一些简单的方法,就可以从 Illuminate\Http\Request
实例中访问用户输入。你不需要关心请求所使用的 HTTP 请求方法,因为对所有请求方式的输入都是通过 input
方法获取用户输入:
$name = $request->input('name');
你还可以传递一个默认值作为第二个参数给 input
方法,如果请求输入值在当前请求未出现时该值将会被返回:
$name = $request->input('name', 'Sally');
处理表单数组输入时,可以使用”.”来访问数组输入:
$input = $request->input('products.0.name');
$names = $request->input('products.*.name');
通过动态属性获取输入
此外,你还可以通过使用 Illuminate\Http\Request
实例上的动态属性来访问用户输入。例如,如果你的应用表单包含 name
字段,那么可以像这样访问提交的值:
$name = $request->name;
使用动态属性的时候,Laravel 首先会在请求中查找参数的值,如果不存在,还会到路由参数中查找。
获取JSON输入值
发送JSON请求到应用的时候,只要 Content-Type
请求头被设置为 application/json
,都可以通过 input
方法获取 JSON 数据,还可以通过“.”号解析数组:
$name = $request->input('user.name');
获取输入的部分数据
如果你需要取出输入数据的子集,可以使用 only
或 except
方法,这两个方法都接收一个数组或动态列表作为唯一参数:
$input = $request->only(['username', 'password']);
$input = $request->only('username', 'password');
$input = $request->except(['credit_card']);
$input = $request->except('credit_card');
only
方法返回你所请求的所有键值对,即使输入请求中不包含你所请求的键,当对应键不存在时,对应返回值为 null
,如果你想要获取输入请求中确实存在的部分数据,可以使用 intersect
方法:
$input = $request->intersect(['username', 'password']);
判断输入值是否存在
判断值是否在请求中存在,可以使用 has
方法,如果值出现过了且不为空,has
方法返回 true
:
if ($request->has('name')) {
//
}