Goedenavond heren,
Ik ben heel de avond al aan het stoeien met een specifiek probleem. Ik ben met een website bezig met het Zend Framework en ben met een registreer-form bezig. Dat werkt allemaal redelijk, maar waar ik niet uitkom is het gebruiken van een custom validator voor in mijn geval het username-veld. Om te beginnen krijg ik de volgende foutmelding:
Message: Plugin by name 'Username' was not found in the registry; used paths: Custom_Validate_: Custom/Validate/ Zend_Validate_: Zend/Validate/
Mijn eigen validator heeft de bestandsnaam Username.php en staat in de map /Custom/Validate/ . Dit is allemaal zoals het hoort.
Hier wat code uit het form:
Het pad word goed gezet, want in de foutmelding geeft hij wel aan dat hij in de juiste map aan het zoeken was.
Hier nog even de code van de validator:
Ik heb me al rot gezocht en verschillende dingen geprobeerd. Ik heb het veld al omgeschreven naar een echt object en de methode $element->setValidator() gebruikt. Dit haalt echter niks uit. Ook heb ik geprobeerd om de validator in andere mappen te plaatsen, zelfs in de Zend lib zelf. Overal geeft hij wel aan dat hij in de juiste map gezocht heeft, maar de foutmelding blijft verschijnen. Het gebruiken van alleen de custom validator heeft ook geen resultaat.
Wanneer ik zelf handmatig een instantie van de validatorklasse probeer te maken loopt het helemaal in de soep. Het zou echt via de Plugin_loader moeten gaan, maar ik kom er echt niet uit waarom de klasse niet geladen word.
Bedankt.
Ik ben heel de avond al aan het stoeien met een specifiek probleem. Ik ben met een website bezig met het Zend Framework en ben met een registreer-form bezig. Dat werkt allemaal redelijk, maar waar ik niet uitkom is het gebruiken van een custom validator voor in mijn geval het username-veld. Om te beginnen krijg ik de volgende foutmelding:
Message: Plugin by name 'Username' was not found in the registry; used paths: Custom_Validate_: Custom/Validate/ Zend_Validate_: Zend/Validate/
Mijn eigen validator heeft de bestandsnaam Username.php en staat in de map /Custom/Validate/ . Dit is allemaal zoals het hoort.
Hier wat code uit het form:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public function init() { $this->addElementPrefixPath('Custom_Validate', 'Custom/Validate/','validate'); // Set the method for the form to POST $this->setMethod('post'); // Add textbox for a username $this->addElement('text', 'username', array( 'label' => 'Gebruikersnaam:', 'required' => true, 'filters' => array('StringTrim'), 'validators' => array( array('validator' => 'Username'), array('validator' => 'StringLength', 'options' => array(5, 20)), ) )); |
Het pad word goed gezet, want in de foutmelding geeft hij wel aan dat hij in de juiste map aan het zoeken was.
Hier nog even de code van de validator:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| require_once 'Zend/Validate/Abstract.php'; class Custom_Validate_Username extends Zend_Validate_Abstract { const EXISTS = 'usernameExists'; protected $_messageTemplates = array( self::EXISTS => 'Deze gebruikersnaam is helaas al in gebruik.', ); public function isValid($value){ $this->_setValue($value); $validator = new Zend_Validate_Db_NoRecordExists('pll_users', 'username'); if (!$validator->isValid($value)) { $this->_error(self::EXISTS); return false; } else { return true; } } } |
Ik heb me al rot gezocht en verschillende dingen geprobeerd. Ik heb het veld al omgeschreven naar een echt object en de methode $element->setValidator() gebruikt. Dit haalt echter niks uit. Ook heb ik geprobeerd om de validator in andere mappen te plaatsen, zelfs in de Zend lib zelf. Overal geeft hij wel aan dat hij in de juiste map gezocht heeft, maar de foutmelding blijft verschijnen. Het gebruiken van alleen de custom validator heeft ook geen resultaat.
Wanneer ik zelf handmatig een instantie van de validatorklasse probeer te maken loopt het helemaal in de soep. Het zou echt via de Plugin_loader moeten gaan, maar ik kom er echt niet uit waarom de klasse niet geladen word.
Bedankt.