Ben bir ZF (v1.10.3) uygulama yazma yola ve benim Zend_Form nesneleri oluşturmak için Zend_Config_Ini kullanmayı seçti. Ben aynı şifre girişleri için sınamak zorunda kadar bu tüm iyi ve güzel oldu. Bu şu anda hatalı çalışan bir parçasıdır:
elements.password.type = password
elements.password2.type = password
elements.password2.options.validators.identical.validator = "Identical"
elements.password2.options.validators.identical.options.token = password
Bunun yerine bu iki unsurdan değerlerini karşılaştırarak, bu değişmez dize "parola" karşı password2 değerini karşılaştırır. Yani "şifre" dışında herhangi bir parola bana aşağıdaki doğrulama hatası veriyor:
The token 'password' does not match the given token '*******'
Bunu yapmak için doğru bir yolu var mı? Google üzerinden buldum Zend_Config_Ini ile Zend_Validate_Identical kullanarak tek örnek bir Alman web sitesinden ve birisi yukarıda benim başarısız kodu olarak aynı "çözüm" öneriyor ortaya çıktı.
PHP kodu bunu yapmak için birçok yolu var biliyorum, ama bu noktada INI yapılandırmaya oldukça ağır kendimi taahhüt ettik, ve ben kesinlikle mecbur olmadıkça yerine onu terk veya bir istisna yapmak istemem.
[EDIT] İşte benim tam newUserForm.ini olduğunu:
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"
Ve burada benim denetleyicisi eylem:
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;
}