web-dev-qa-db-fra.com

Laravel Validation un des deux champs doit être rempli

J'ai deux domaines:

QQ

Email

Comment configurer un objet Validator pour que l'un de ces champs soit rempli? Peu importe lequel.


    $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 devrait fonctionner.

Cela signifie que le champ est obligatoire si l'autre champ n'est pas présent. Si vous avez plus de deux champs et qu'un seul est requis, utilisez required_without_all:foo,bar,...

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

Dans l'exemple ci-dessus (donné par lucasgeiter), vous n'avez en fait besoin que d'une des conditions, pas des deux.

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

Si vous avez les deux règles, le fait de ne remplir aucune des deux entraînera l'affichage de DEUX messages d'erreur. De cette façon, il vérifiera qu'au moins un champ est rempli et n'affichera qu'un seul message d'erreur si aucun n'est rempli.

16
omarjebari