我開始編寫一個ZF(v1.10.3)應用程序,並選擇使用Zend_Config_Ini來生成我的Zend_Form對象。這一切都很好,直到我不得不測試相同的密碼輸入。這是運作錯誤,現在部分:使用.ini配置Zend_Form密碼確認 - 可以完成嗎?
elements.password.type = password
elements.password2.type = password
elements.password2.options.validators.identical.validator = "Identical"
elements.password2.options.validators.identical.options.token = password
而是比較這兩個元素的值,它比較密碼2的對文本字符串「密碼」值。所以任何密碼除了「密碼」給我以下驗證錯誤:
The token 'password' does not match the given token '*******'
有沒有正確的方法來做到這一點? Zend_Validate_Identical和Zend_Config_Ini的唯一通過Google發現的例子來自德國的一個網站,並且有人似乎推薦了與上述失敗代碼完全相同的「解決方案」。
我知道在PHP代碼中有很多方法可以做到這一點,但是我現在已經非常重視INI配置,並且我寧願不放棄它或者例外,除非我絕對必須。
[編輯]這裏是我的全部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"
這裏是我的控制器操作:
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;
}
我試過你的INI,但仍然有同樣的問題。我上面發佈了更多的代碼,但我開始認爲框架升級是按順序進行的。 – 2010-09-11 03:25:52
是的,我只是試着用你的確切的ini文件,這對我來說也很好。所以嘗試升級ZF看看是否有幫助。 – 2010-09-11 08:32:25
我恰好有一些老版本的ZF,所以我只是用1.10.2試了我的測試腳本,然後我遇到了和你一樣的問題。所以我有信心升級ZF將解決您的問題。 – 2010-09-11 08:43:20