是否可以设置以下选项:
当你必须添加一个用户时,你需要设置一个密码,但是当你去编辑一个用户时,就不需要设置密码了。
但是当您在编辑模式下将密码留空时。它不应该覆盖现有的密码。
如何在Zend框架2.0中修复这个问题?
编辑:也许最好是显示一些代码…我在我的passwordfields上设置了以下验证器:
$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')
),
),
)));
工作良好,但不是当我离开它空在我的编辑模式。但它在我的附加模式中是必需的。我如何在编辑模式中接受空的密码字段,而不清除该用户的现有密码?
为什么不直接设置一个需要密码的bool值传递给验证方法呢?将它与当前的验证规则结合使用意味着它将在需要时运行验证。控制器还可以检测该页面的post/get值是否已设置,并相应地更改该bool值。
这不是最好的方法,可能有一些奇特的Zend方法,但手册不会涵盖它lol
例子public function validate($passRequired = false)
{
if ($passRequired) {
//now run the validation
}
}
你可以试试下面的代码:
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()) {
// ...
}
// ...
}