Zend Framework 2 validateurs personnalisés pour les formulaires

Je suis en train de faire un formulaire d'inscription qui vérifie la complexité du champ de mot de passe. J'ai écrit un validateur personnalisé pour ce faire, selon le la documentation. Ce fichier réside dans mon 'Utilisateur' module Utilisateur\src\Utilisateur\Validator.

<?php

namespace User\Validator;

use Zend\Validator\AbstractValidator;

class PasswordStrength extends AbstractValidator {

const LENGTH = 'length';
const UPPER  = 'upper';
const LOWER  = 'lower';
const DIGIT  = 'digit';

protected $messageTemplates = array(
    self::LENGTH => "'%value%' must be at least 6 characters long",
    self::UPPER => "'%value% must contain at least one uppercase letter",
    self::LOWER => "'%value% must contain at least one lowercase letter",
    self::DIGIT => "'%value% must contain at least one digit letter"
);

public function isValid($value) {
    ... validation code ...
}
}

Mon problème se pose en essayant d'utiliser ce programme de validation de mon formulaire d'inscription. J'ai essayé d'ajouter le validateur pour le ServiceManager en le configurant dans Module.php.

public function getServiceConfig() {
    return array(
        'invokables' => array(
            'PasswordStrengthValidator' => 'User\Validator\PasswordStrength'
        ),
    );
}

Puis je l'ai ajouté à l'entrée du filtre à User.php.

public function getInputFilter() {
    if (!$this->inputFilter) {
        $inputFilter = new InputFilter();
        $factory     = new InputFactory();

        $inputFilter->add($factory->createInput(array(
            'name'     => 'username',
            'required' => true,
            'validators' => array(
                array(
                    'name'    => 'StringLength',
                    'options' => array(
                        'encoding' => 'UTF-8',
                        'min'      => 1,
                        'max'      => 100,
                    ),
                ),
            ),
        )));

        $inputFilter->add($factory->createInput(array(
            'name'     => 'password',
            'required' => true,
            'validators' => array(
                array(
                    'name'    => 'PasswordStrengthValidator',
                ),
            ),
        )));

        $this->inputFilter = $inputFilter;
    }

    return $this->inputFilter;
}

Cependant, lorsque j'accède au formulaire et cliquez sur le bouton envoyer, je reçois un ServiceNotFoundException.

Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for PasswordStrengthValidator

Est-il un problème avec mon ServiceManager de configuration? Je ne suis même pas sûr si ce est la bonne façon d'utiliser un validateur personnalisé en premier lieu. J'ai trouvé beaucoup d'exemples à l'aide de ZF1, mais la documentation et des exemples pour le ZF2 que j'ai trouvé ne jamais s'étendre au-delà de l'écriture du programme de validation à l'adresse de son intégration avec les formes, etc. Tout conseil serait grandement apprécié.

source d'informationauteur The Doge Prince