Bolt\Controller\Backend\Users::setUserFormValidation PHP Метод

setUserFormValidation() приватный Метод

Use a custom validator to check: * Passwords are identical * Username is unique * Email is unique * Displaynames are unique
private setUserFormValidation ( FormBuilder $form, boolean $addusername = false ) : FormBuilder
$form Symfony\Component\Form\FormBuilder
$addusername boolean
Результат Symfony\Component\Form\FormBuilder
    private function setUserFormValidation(FormBuilder $form, $addusername = false)
    {
        $users = $this->users();
        $form->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use($addusername, $users) {
            $form = $event->getForm();
            $id = $form['id']->getData();
            $pass1 = $form['password']->getData();
            $pass2 = $form['password_confirmation']->getData();
            // If adding a new user (empty $id) or if the password is not empty (indicating we want to change it),
            // then make sure it's at least 6 characters long.
            if ((empty($id) || !empty($pass1)) && strlen($pass1) < 6) {
                $error = new FormError(Trans::__('page.edit-users.error.password-short'));
                $form['password']->addError($error);
            }
            // Passwords must be identical.
            if ($pass1 != $pass2) {
                $form['password_confirmation']->addError(new FormError(Trans::__('page.edit-users.error.password-mismatch')));
            }
            if ($addusername) {
                // Password must be different from username
                $username = strtolower($form['username']->getData());
                if (!empty($username) && strtolower($pass1) === $username) {
                    $form['password']->addError(new FormError(Trans::__('page.edit-users.error.password-different-username')));
                }
                // Password must not be contained in the display name
                $displayname = strtolower($form['displayname']->getData());
                if (!empty($displayname) && strrpos($displayname, strtolower($pass1)) !== false) {
                    $form['password']->addError(new FormError(Trans::__('page.edit-users.error.password-different-displayname')));
                }
                // Usernames must be unique.
                if (!$users->checkAvailability('username', $form['username']->getData(), $id)) {
                    $form['username']->addError(new FormError(Trans::__('page.edit-users.error.username-used')));
                }
            }
            // Email addresses must be unique.
            if (!$users->checkAvailability('email', $form['email']->getData(), $id)) {
                $form['email']->addError(new FormError(Trans::__('page.edit-users.error.email-used')));
            }
            // Displaynames must be unique.
            if (!$users->checkAvailability('displayname', $form['displayname']->getData(), $id)) {
                $form['displayname']->addError(new FormError(Trans::__('page.edit-users.error.displayname-used')));
            }
        });
        return $form;
    }