次のカスタムリクエストがあるとしましょう。
_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 [〜#〜]データが得られます。 tは渡されることを意味しました。
_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...)
を実行せずに、検証済みのデータを取得するにはどうすればよいですか?[〜#〜] only [〜#〜]
$request->validated()
は、検証されたデータのみを返します。例:
_public function store(Request $request)
{
$request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
$validatedData = $request->validated();
}
_
$request->validate([rules...])
は、検証に合格した場合にのみ検証済みデータを返します。
例:
_public function store(Request $request)
{
$validatedData = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
}
_
OK ...この質問を入力するのに時間を費やした後、laravel "API"ドキュメントを確認することにしました: 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())]);
}