検証と承認のロジックを作成するための推奨される方法は、そのロジックを個別のリクエストクラスに配置することです。このようにして、コントローラーコードはクリーンなままになります。
を実行してリクエストクラスを作成できますphp artisan make:request SomeRequest
。
各リクエストクラスのrules()
メソッドで、検証ルールを定義します。
//SomeRequest.php
public function rules()
{
return [
"name" => [
'required',
'array', // input must be an array
'min:3' // there must be three members in the array
],
"name.*" => [
'required',
'string', // input must be of type string
'distinct', // members of the array must be unique
'min:3' // each string must have min 3 chars
]
];
}
コントローラで、次のようにルート関数を記述します。
// SomeController.php
public function store(SomeRequest $request)
{
// Request is already validated before reaching this point.
// Your controller logic goes here.
}
public function update(SomeRequest $request)
{
// It isn't uncommon for the same validation to be required
// in multiple places in the same controller. A request class
// can be beneficial in this way.
}
各リクエストクラスには、リクエストクラスの通常の動作を変更するために、ビジネスロジックと特殊なケースに基づいてカスタマイズできる検証前と検証後のフック/メソッドが付属しています。
類似のタイプのリクエスト(web
およびapi
)リクエストの親リクエストクラスを作成し、これらの親クラスにいくつかの一般的なリクエストロジックをカプセル化できます。
$request->validate([...])
いる場合は、必ずtry catchに配置してください。データが検証に失敗した場合、例外が発生します。