Как я могу получить ТОЛЬКО проверенные данные из laravel FormRequest?

Допустим, у меня есть следующий пользовательский запрос:

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...)?

4

Решение

$request->validated() вернет только проверенные данные.

В вашем магазине метод:

public function store(PlanRequest $request)
{
$data = $request->validated();
}
6

Другие решения

Хорошо … После того, как я потратил время, чтобы напечатать этот вопрос, я решил проверить документацию 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())]);
}
5

По вопросам рекламы [email protected]