J'utilise Laravel Auth pour effectuer l'authentification. J'ai besoin de comparer une entrée de champ (numéro de téléphone) avec une expression regex dans la méthode de validation. Comment puis-je faire ceci. Voici le code de méthode que j'utilise,

(Actuellement, je code dur mon numéro "0312 1234567" Comment puis-je utiliser une expression régulière ici?)

public function validator(array $data)
{ 
    if($data['emailOrNumber'] == "03121234567") {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'emailOrNumber' => ['required', 'numeric','unique:usersNew,phone'],
            'password' => ['required', 'string', 'min:8'],
            'surname2' => ['required', 'string', 'max:255']
        ]);
    }
}
0
Faisal Shani 4 nov. 2019 à 14:53

1 réponse

Si vous souhaitez vérifier par rapport à une expression régulière, vous pouvez utiliser la règle de validation Regex.

Vous pourriez utiliser

return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'emailOrNumber' => ['required', 'numeric','unique:usersNew,phone', 'regex:/(\+[0-9]{2})?[0-9]{10,12}/g'],
            'password' => ['required', 'string', 'min:8'],
            'surname2' => ['required', 'string', 'max:255']
        ]);

Petit indice, je ne sauvegarderais pas l'email ou le numéro de téléphone dans la même colonne de la base de données. Ce sont deux choses complètement différentes, donc je les enregistrerais dans des colonnes différentes. Vous pouvez toujours laisser une des deux colonnes vide.

Vous pouvez en savoir plus sur cette validation sur https://laravel.com/docs/5.7/validation#rule-regex

0
Tim 4 nov. 2019 à 13:37