在编辑模式zend中保留密码空白



是否可以设置以下选项:

当你必须添加一个用户时,你需要设置一个密码,但是当你去编辑一个用户时,就不需要设置密码了。

但是当您在编辑模式下将密码留空时。它不应该覆盖现有的密码。

如何在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()) {
     // ...
  }
  // ...
}

最新更新