假设我有以下自定义请求:
class PlanRequest extends FormRequest
{
// ...
public function rules()
{
return
[
'name' => 'required|string|min:3|max:191',
'monthly_fee' => 'required|numeric|min:0',
'transaction_fee' => 'required|numeric|min:0',
'processing_fee' => 'required|numeric|min:0|max:100',
'annual_fee' => 'required|numeric|min:0',
'setup_fee' => 'required|numeric|min:0',
'organization_id' => 'exists:organizations,id',
];
}
}
当我从控制器访问它时,如果我执行$request->all()
,它会给我ALL数据,包括不打算传递的额外垃圾数据。
public function store(PlanRequest $request)
{
dd($request->all());
// This returns
[
'name' => 'value',
'monthly_fee' => '1.23',
'transaction_fee' => '1.23',
'processing_fee' => '1.23',
'annual_fee' => '1.23',
'setup_fee' => '1.23',
'organization_id' => null,
'foo' => 'bar', // This is not supposed to show up
];
}
如何仅获得经过验证的数据,而无需手动执行$request->only('name','monthly_fee', etc...)
?
3条答案
按热度按时间56lgkhnf1#
$request->validated()
将仅返回经过验证的数据。替代溶液:
如果验证通过,
$request->validate([rules...])
只返回验证过的数据。gkn4icbw2#
好的......在我花时间输入这个问题之后,我想我应该查看一下laravel“API”文档:https://laravel.com/api/5.5/Illuminate/Foundation/Http/FormRequest.html
看起来我可以使用
$request->validated()
。希望他们能在验证文档中这样说。这让我的控制器动作看起来相当流畅:jhdbpxl93#
这可能是一个旧的线程,有些人可能使用
Validator
类而不是使用validator()
helper函数来请求。对于属于后一种类型的用户,可以使用
validated()
函数从request中检索已验证值的数组。这将返回通过验证的所有值的数组。
从Laravel 5.6开始,这才开始出现在文档中,但可能会在Laravel 5.2中出现