Ich versuche, ein Benutzerregistrierungsformular zu machen, das auf die Komplexität des Passwortfeldes prüft. Ich habe einen benutzerdefinierten Validator geschrieben, um dies gemäß der documentation zu tun. Diese Datei befindet sich in meinem Benutzermodul unter Benutzer \ src \ User \ Validator.Zend Framework 2 Benutzerdefinierte Validatoren für Formulare
Mein Problem tritt auf, wenn ich versuche, diesen Validator in meinem Benutzerregistrierungsformular zu verwenden. Ich habe versucht, den Validator dem ServiceManager hinzuzufügen, indem ich ihn in der Module.php konfiguriere.
public function getServiceConfig() {
return array(
'invokables' => array(
'PasswordStrengthValidator' => 'User\Validator\PasswordStrength'
),
);
}
Dann habe ich es dem Eingabefilter in User.php hinzugefügt.
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;
}
Wenn ich jedoch auf das Formular zugreifen und die Schaltfläche zum Absenden drücken, erhalte ich eine ServiceNotFoundException.
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for PasswordStrengthValidator
Gibt es ein Problem mit meiner ServiceManager Konfiguration? Ich bin mir nicht einmal sicher, ob dies der geeignete Weg ist, einen benutzerdefinierten Validator überhaupt zu verwenden. Ich habe viele Beispiele mit ZF1 gefunden, aber die Dokumentation und die Beispiele für ZF2, die ich gefunden habe, reichen nie über das Schreiben des Validators hinaus, um seine Integration mit Formularen usw. anzusprechen. Jeder Rat würde sehr geschätzt werden.
Huh, ich wusste nicht, dass es mit dem Namen zu tun haben, konnte ich es wie es Registrierung ... Ich habe versucht, wirklich Ihre letzte Vorschlag aus und konfiguriert sie in der ServiceManager mit dem voll qualifizierten Klassennamen, und das hat es geschafft! Danke für Ihre Hilfe! –