web-dev-qa-db-ja.com

Laravel検証2つのフィールドのいずれかを入力する必要があります

2つのフィールドがあります。

QQ

Eメール

これらのフィールドの1つに入力する必要があるように、Validatorオブジェクトを設定するにはどうすればよいですか?どちらでもかまいません。


    $messages = array(
        'email.required_without:qq' => Lang::get('messages.mustenteremail'),
        'email.email' => Lang::get('messages.emailinvalid'),
        'qq.required_without:email' => Lang::get('messages.mustenterqq'),
    );
35
imperium2335

required_without が機能するはずです。

これは、他のフィールドが存在しない場合、そのフィールドが必須であることを意味します。 3つ以上のフィールドがあり、1つだけが必要な場合は、required_without_all:foo,bar,...を使用します

$rules = array(
    'Email' => 'required_without:QQ',
    'QQ' => 'required_without:Email',
);
74
lukasgeiter

上記の例(lucasgeiterによって与えられる)では、実際には両方ではなく片方の条件のみが必要です。

$rules = array(
    'Email' => 'required_without:QQ'
);

両方のルールがある場合、どちらも入力しないと、2つのエラーメッセージが表示されます。この方法では、少なくとも1つのフィールドが入力されていることを確認し、どちらも入力されていない場合は1つのエラーメッセージのみを表示します。

16
omarjebari