gpt4 book ai didi

php - 如何使用相同的字段验证来进行 zend 表单中的添加和编辑操作?

转载 作者:可可西里 更新时间:2023-11-01 00:23:15 25 4
gpt4 key购买 nike

我是 zend 框架的新手。我正在 zend 中开发一个简单的用户注册应用程序。我的应用程序中同时具有添加和编辑功能。我可以使用我的应用程序完美地添加新用户。但是当我尝试编辑密码以外的用户信息时,用于密码和密码确认字段的验证程序会出错。仅当我想编辑密码以外的用户信息时,我才需要删除/禁用密码和密码确认字段的验证器。

我的表格:

$password = new Zend_Form_Element_Password('password');
$password->setRequired(true)
->addFilter('StringTrim')
->addFilter('StripTags')
->addValidator('NotEmpty', false, array('messages'=>'password cannot be empty'))
->addValidator('StringLength', false, array(2, 20, 'messages'=>'password must be 2-20 character'))
->setLabel('Password:');
$this->addElement($password);

$confirmPassword = new Zend_Form_Element_Password('confirmPassword');
$confirmPassword->setRequired(true)
->addFilter('StringTrim')
->addFilter('StripTags')
->addValidator('NotEmpty', false, array('messages'=>'password do not match'))
->addValidator(new Application_Validate_PasswordConfirmation())
->setLabel('Retype password');

我的验证器类:

class Application_Validate_PasswordConfirmation extends Zend_Validate_Abstract
{
const NOT_MATCH = 'notMatch';

protected $_messageTemplates = array(
self::NOT_MATCH => 'Password confirmation does not match'
);

public function isValid($value, $context = null)
{
$value = (string) $value;
$this->_setValue($value);

if (is_array($context)) {
if (isset($context['password']) && ($value == $context['password']))
{
return true;
}
} elseif (is_string($context) && ($value == $context)) {
return true;
}

$this->_error(self::NOT_MATCH);
return false;
}
}

最佳答案

    $modelUsers = new Model_Users();
$userId = $this->_getParam('userId');

if ($userId) {
$populateData = array();

$user = $modelUsers->fetch($userId);

if ($user instanceof Model_User) {
$populateData = $user->toArray();
}
$form = $this->_getAddForm($user->email, $user->username, $user->phone);
$password = $this->getRequest()->getPost('password');
if (trim($password) == '') {
$form->getElement('password')
->setRequired(false)
->clearValidators();

$form->getElement('confirmPassword')
->setRequired(false)
->clearValidators();
}

}
else {
$form = $this->_getAddForm($mail=null, $username=null, $phone=null);
}
$request = $this->getRequest();

if ($request->isPost()) {

$post = $request->getPost();
if ($form->isValid($post)) {
$values = $form->getValidValues($post);

这就是我在@drew010 的帮助下明确解决这个问题的方法

关于php - 如何使用相同的字段验证来进行 zend 表单中的添加和编辑操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com