J'ai commencé à écrire une application ZF (v1.10.3) et j'ai choisi d'utiliser Zend_Config_Ini pour générer mes objets Zend_Form. C'était très bien jusqu'à ce que je devais tester pour des entrées de mot de passe identiques. Ceci est la partie qui est mauvaise conduite en ce moment:Confirmation du mot de passe Zend_Form avec .ini config - Peut-on le faire?
elements.password.type = password
elements.password2.type = password
elements.password2.options.validators.identical.validator = "Identical"
elements.password2.options.validators.identical.options.token = password
Au lieu de comparer les valeurs de ces deux éléments, il compare la valeur de password2 contre la chaîne « mot de passe ». Donc, un mot de passe, sauf « mot de passe » me donne l'erreur de validation suivant:
The token 'password' does not match the given token '*******'
Y at-il une bonne façon de le faire? Le seul exemple d'utilisation de Zend_Validate_Identical avec Zend_Config_Ini que j'ai trouvé via Google provenait d'un site Web allemand, et quelqu'un semblait recommander exactement la même "solution" que mon code défaillant ci-dessus.
Je sais qu'il y a beaucoup de façons de le faire dans le code PHP, mais je me suis fortement engagé dans la configuration INI à ce stade, et je préfère ne pas l'abandonner ou faire une exception sauf si je dois absolument .
[EDIT] Voici mon plein newUserForm.ini:
method = "post"
id = "newUserForm"
accept-charset = "utf-8"
elements.username.type = "text"
elements.username.options.label = "Username"
elements.username.options.required = true
elements.username.options.validators.alnum = "Alnum"
elements.username.options.validators.strlen.validator = "StringLength"
elements.username.options.validators.strlen.options.min = "3"
elements.username.options.validators.strlen.options.max = "32"
elements.email.type = "text"
elements.email.options.label = "Email address"
elements.email.options.required = true
elements.email.options.validators.email.validator = "EmailAddress"
elements.password.type = "password"
elements.password.options.label = "Password"
elements.password.options.required = true
elements.password.options.validators.strlen.validator = "StringLength"
elements.password.options.validators.strlen.options.min = "6"
elements.password2.type = "password"
elements.password2.options.label = "Password (confirm)"
elements.password2.options.required = true
elements.password2.options.validators.identical.validator = "Identical"
elements.password2.options.validators.identical.options.token = password
elements.submit.type = "submit"
elements.submit.options.label = "Submit"
Et voici mon action du contrôleur:
public function indexAction()
{
$formConfig = new Zend_Config_Ini(APPLICATION_PATH.'/configs/newUserForm.ini');
$newUserForm = new Zend_Form($formConfig);
$request = $this->getRequest();
if ($request->isPost()) {
if ($newUserForm->isValid($request->getPost())) {
// create new user here
$this->_helper->redirector('index', 'index');
}
}
$this->view->newUserForm = $newUserForm;
}
J'ai essayé votre INI et j'ai toujours le même problème. J'ai posté plus de mon code ci-dessus, mais je commence à penser qu'une mise à niveau du framework est en ordre. –
Yup J'ai juste essayé avec votre dossier ini exact et cela a fonctionné bien pour moi aussi. Essayez donc de mettre à jour ZF pour voir si cela vous aide. –
Il se trouve que j'ai d'anciennes versions de ZF qui traînent, alors j'ai juste essayé mon script de test en utilisant 1.10.2, et j'ai eu le même problème que vous. Donc, je suis confiant de mettre à jour ZF va résoudre votre problème. –