Laravel 请求:获取请求参数 2 个改进

获取所有输入数据

你可以使用 all 方法以 数组 形式获取到所有输入数据:

$input = $request->all();

获取指定输入值

使用几种简单的方法(不需要特别指定哪个 HTTP 动作),就可以访问 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');

从查询字符串获取输入

使用 input 方法可以从整个请求中获取输入数据(包括查询字符串),而 query 方法可以只从查询字符串中获取输入数据:

$name = $request->query('name');

如果请求的查询字符串数据不存在,则将返回这个方法的第二个参数:

$name = $request->query('name', 'Helen');

你可以不提供参数调用 query 方法来以关联数组的形式检索所有查询字符串值:

$query = $request->query();

通过动态属性获取输入

你也可以通过 Illuminate\Http\Request 实例的动态属性来获取用户输入。例如,如果你应用的表单中包含 name 字段,那么可以像这样访问该字段的值:

$name = $request->name;

Laravel 在处理动态属性的优先级是,先在请求的数据中查找,如果没有,再到路由参数中查找。

获取 JSON 输入信息

如果发送到应用程序的请求数据是 JSON,只要请求的 Content-Type 标头正确设置为 application/json,就可以通过 Input 方法访问 JSON 数据。你甚至可以使用 「点」语法来读取 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');
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!