LoginSignup
29
32

More than 5 years have passed since last update.

Laravelでバリデーションルールを配列で指定する方法

Posted at

Laravelのバリデーションって書きやすくて良いいですよね。
かゆいところに手が届く感じ。

どんな使い方が出来るかはドキュメントに詳しく記載されているのですが、
バリデーションルールの指定方法には大きく2タイプあるものの片方しか紹介されていなくて、いつも調べる事になるのでメモメモ。

複数条件をパイプで繋ぐタイプ

これはドキュメントにも例が載っているタイプ。

$rules = [
    'name'         => 'required|max:40',
    'gender'       => 'required|in:male,female',
    'age'          => 'digits_between:0,150',
    'use_discount' => 'boolean',
    'coupon'       => 'required_if:use_discount,1|regex:/^[0-9a-zA-Z]{20}$/',
];

各情報に対して、複数のルールを「|」(パイプ)でつなげます。
とてもシンプルで良いですね。

パイプの代わりに配列で指定するタイプ

正規表現でパイプとか使う場合にはこちらのタイプを使います。ドキュメントにも書いてある
http://readouble.com/laravel/5/1/ja/validation.html#rule-regex

でも「配列で指定する必要がある」って言われても例が無いととっつきにくいのよね

$rules = [
    'name'         => ['required', 'max:40'],
    'gender'       => ['required', 'in:male,female'],
    'age'          => ['digits_between:0,150'],
    'use_discount' => ['boolean'],
    'coupon'       => ['required_if:use_discount,1', 'regex:/^[0-9a-zA-Z]{20}$/'],
];

動的に条件を追加したい時とかはこちらのタイプのほうが使いやすいので、そういった視点でどちらのタイプを使うか選んでもいいと思う。

29
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
32