From 8237a71f52b353eac54c7e68840388ed38f0136f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Aug 2018 21:59:21 +0200 Subject: [PATCH] app/forms/Registration.php: change Uniqueness validator to Callback + cleanup username validators abit. --- app/forms/Registration.php | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/app/forms/Registration.php b/app/forms/Registration.php index c95adff..785bee1 100644 --- a/app/forms/Registration.php +++ b/app/forms/Registration.php @@ -28,7 +28,6 @@ use Phalcon\Forms\Element\Text, * Validators */ use Phalcon\Validation\Validator\Callback as CallbackValidator, - Phalcon\Validation\Validator\Uniqueness as UniquenessValidator, Phalcon\Validation\Validator\Alnum as AlnumValidator, Phalcon\Validation\Validator\Email as EmailValidator, Phalcon\Validation\Validator\StringLength as StringLengthValidator, @@ -50,15 +49,20 @@ class Registration extends FormBase $username->setLabel('Username'); - $username->addValidator(new AlnumValidator()); - - $validator = new UniquenessValidator(array( - 'model' => new UserModel(), - 'message' => 'The username already exists.', - 'attribute' => 'username', - )); - - $username->addValidator($validator); + $username->addValidators([ + new AlnumValidator([ + 'message' => 'Username must contain only letters and numbers.' + ]), + new StringLengthValidator([ + 'min' => 2, + 'messageMinimum' => 'Username must be at least :min characters long.', + ]), + new CallbackValidator([ + 'callback' => function($data) { return User::findFirstByUsername($data['username']) === false; }, + 'message' => 'The username already exists.', + 'attribute' => 'username', + ]) + ]); $this->add($username); @@ -90,10 +94,9 @@ class Registration extends FormBase new IdenticalValidator([ 'accepted' => $this->getEntity()->getEmail(), ]), - new UniquenessValidator([ - 'model' => new UserModel(), + new CallbackValidator([ + 'callback' => function($data) { return User::findFirstByEmail($data['email']) === false; }, 'message' => 'This email already exist.', - 'attribute' => 'email', ]) ]);