【发布时间】:2010-09-10 21:17:33
【问题描述】:
我开始编写一个 ZF (v1.10.3) 应用程序并选择使用 Zend_Config_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
它不是比较这两个元素的值,而是将 password2 的值与文字字符串“password”进行比较。所以除了“密码”之外的任何密码都会给我以下验证错误:
The token 'password' does not match the given token '*******'
有没有正确的方法来做到这一点?我通过 Google 找到的将 Zend_Validate_Identical 与 Zend_Config_Ini 一起使用的唯一示例来自一个德国网站,似乎有人推荐了与我上面失败的代码完全相同的“解决方案”。
我知道在 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;
}
【问题讨论】:
标签: php zend-framework configuration zend-form