是否可以设置以下选项:
当您必须添加用户时,您需要设置密码,但是当您去编辑用户时,则无需设置密码。
但是当您在编辑模式中将密码留空时。它不应该覆盖令人兴奋的密码。
我如何在Zend framework 2.0中解决这个问题?
编辑:
也许最好显示一些代码..我在密码字段上设置了以下验证器:
$inputFilter->add($factory->createInput(array(
'name' => 'password',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array( array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 4,
'max' => 30,
),
), ),
)));
$inputFilter->add($factory->createInput(array(
'name' => 'confirm_password',
'required' => false,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 4,
'max' => 30,
),
),
array(
'name' => 'identical',
'options' => array('token' => 'password')
),
),
)));
工作正常,但是当我在编辑模式中将其留空时。但它在我的添加模式中是必需的。如何在编辑模式下接受空密码字段,而不清除该用户的激活密码?
答案 0 :(得分:0)
为什么不只是将密码需要bool传递给验证方法,将其与当前验证规则结合使用意味着它将在需要时运行验证。控制器还可以检测该页面的发布/获取值是否已设置并相应地更改该bool值。
它不是最好的方法,可能有一些花哨的Zend方式这样做,但手册不会覆盖它大声笑
实施例
public function validate($passRequired = false)
{
if ($passRequired) {
//now run the validation
}
}
答案 1 :(得分:0)
您可以尝试以下代码:
if ($this->getRequest()->isPost()) {
$form->setData($this->getRequest()->getPost());
if ($form->get("password")->getValue() == ""){
$form->getInputFilter()->remove('password');
$form->getInputFilter()->remove('password_r');
}
if ($form->isValid()) {
// ...
}
// ...
}