2012-10-29 58 views
2

我正在尝试对员工进行修改,但我的密码字段出现问题。symfony2表单更改密码

当我在表单上时,如果没有在用空白密码修改的密码中插入任何内容。这是不正确的,我希望如果用户不做任何事情,密码不会将密码留空。

回答

3

这里的问题是,你使用一个字段来保存两个不同的东西:一个简单的密码和它的散列。所以,相反,他们分成$plainPassword$password和更新$password场只有当$plainPassword不为空:

if ($plainPassword = $user->getPlainPassword()) { 
    $encoder = $this->get('security.encoder_factory')->getEncoder($user); 
    $password = $encoder->encodePassword($plainPassword, $user->getSalt()); 
    $user->setPassword($password); 
} 
3

只是不更新​​,如果它没有提交(修改)密码字段。 我认为这就是你需要的一切

/** 
* @ORM\Entity 
**/ 
class User 
{ 
    // your setters/getters 

    public function setPassword($password) 
    { 
     if (null === $password) { 
      return; 
     } 

     $this->password = $password; 
    } 
}