Laravelのバリデーションに登場するrequiredには、他のフィールドの状態に応じて必須にするかを決めるルールがいくつかあります。
指定した項目が必須になる条件を付けたい場合に非常に便利です。
例えば、AとBの入力項目の内どちらかを必須にしたり、チェックボックスにオン(チェック状態)にした場合のみテキストボックスを必須にするなど、使い方は様々です。
様々な条件で必須にする
Laravelが用意しているrequiredバリデーションには以下の7種類あり、指定の入力項目だけでなく、他の入力項目と状態に応じて必須にするか否かを指定できます。
required
required_if
required_unless
required_with
required_with_all
required_without
required_without_all
それぞれどのように使用するかは、こちらの参考サイトに詳しい説明があります。
使用例
著者が実際に使用した時のちょっと複雑な例をご紹介します。
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public static function rules()
{
return [
'center' => 'required_without_all:left,right|array|size:3',
'center.foo' => 'required_with:center|string|alpha',
'center.bar' => 'required_with:center|integer|min:0,max:1000',
'left' => 'required_with:right|array|size:3',
'left.foo' => 'required_with:left|string|alpha',
'left.bar' => 'required_with:left|integer|min:0,max:1000',
'right' => 'required_with:left|array|size:3',
'right.foo' => 'required_with:right|string|alpha',
'right.bar' => 'required_with:right|integer|min:0,max:1000',
'other' => 'required|integer',
];
}
少しだけ解説
- center
- leftとrightが空白(存在しない)なら、centerは必須。
centerが存在するなら、center.fooとcenter.barは必須。 - left
- rightが存在するなら、leftは必須。
leftが存在するなら、left.fooとleft.barは必須。 - right
- leftが存在するなら、rightは必須。
rightが存在するなら、right.fooとright.barは必須。
Laravel、やっぱり便利ですね!
- Original:https://minory.org/laravel-7required.html
- Source:Minory
- Author:管理者