サイトアイコン IT NEWS

【Laravel】7種類あるrequiredバリデーションの使い方

laravel-7required

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、やっぱり便利ですね!

モバイルバージョンを終了