laravel 请求request 接收参数

时间:2023-04-16 19:21:08

获取请求输入

获取所有输入值

你可以使用 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')) {
//
}