Допустим, у меня есть следующий пользовательский запрос:
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()
, это дает мне ВСЕ данные, включая дополнительные данные мусора, которые не предназначены для передачи.
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...)
?
$request->validated()
вернет только проверенные данные.
В вашем магазине метод:
public function store(PlanRequest $request)
{
$data = $request->validated();
}
Хорошо … После того, как я потратил время, чтобы напечатать этот вопрос, я решил проверить документацию API «laravel»: https://laravel.com/api/5.5/Illuminate/Foundation/Http/FormRequest.html
Похоже, я могу использовать $request->validated()
, Хотелось бы, чтобы они сказали это в документации по валидации. Это заставляет мои действия контроллера выглядеть довольно гладко:
public function store(PlanRequest $request)
{
return response()->json(['plan' => Plan::create($request->validated())]);
}