laravel5.1のバリデーションを使って、チェックボックスにチェックが入っていなければ、指定フィールドを入力必須にする方法。

laravel5.1のバリデーションを使って、チェックボックスにチェックが入っていなければ、指定フィールドを入力必須にする方法。

1, 結論から言うと、以下のようにすればOK!(required_unlessを使う)

2, この2種類が、まぎらわしくて混乱した。
a, 「指定フィールドそのものが存在していない」場合は必須
b, 指定フィールドに「指定した値」が存在しない場合は必須)
https://readouble.com/laravel/5.1/ja/validation.html#rule-required-unless

a, 「指定フィールドそのものが存在していない」場合は必須
required_without:foo,bar,…
フィールドは、指定された他のフィールドのうちどれかが存在しない場合のみ、この項目が入力されていることをバリデートします。

b, 指定フィールドに、「指定した値」が存在しない場合は必須)
required_unless:他のフィールド,値,…
引数で指定された他のフィールドフィールドが、値のどれとも一致しない場合に、このフィールドが入力されていることをバリデートします。

今回やりたい事はrequired_unlessだったんだよね…。
required_withoutを使う時って、動的に入力フィールドを生成する場合だけか?

3, バリデーションのエラーメッセージ
validation.required_unless

何もしないとrequired_unlessの全エラーメッセージ(フィールドに関係なく)が、以上のように同じ表示がされてしまう。
対策としては、任意の日本語を設定する
resource/lang/ja/validataion.php

チェックが入っていたら必須の場合は、素直&簡単(required_ifを使う)
ラジオボタンやセレクトボックスの場合でも同じ(この値だったら~)

laravelのバリデーションは簡単に実装出来るけど、if文のような条件分岐だと、慣れが必要だな。
まあ、いい勉強になった。

コメントを残す

メールアドレスが公開されることはありません。