我正在使用 FOSUserBundle,并且正在尝试创建一个允许用户更新其用户配置文件的页面。我面临的问题是,如果用户不想更改/更新密码,我的表单不需要用户重新输入密码。因此,当用户使用空密码提交表单时,数据库将使用空字符串更新,并且用户将无法登录。
如果未设置密码字段,如何让我的表单忽略更新密码字段?下面是我正在使用的代码。
$user = $this->get('security.context')->getToken()->getUser();
//user form has email and repeating password fields
$userForm = $this->createForm(new UserFormType(), $user);
if ($request->getMethod() == 'POST') {
$userForm->bindRequest($request);
if($userForm->isValid()){
//this will be be empty string in the database if the user does not enter a password
$user->setPlainPassword($userForm->getData()->getPassword());
$em->flush();
}
}
我已经尝试了以下一些方法,但这仍然是空的,因为 bindRequest 将空密码设置为用户
if($userForm->getData()->getPassword())
$user->setPlainPassword($userForm->getData()->getPassword());
我也尝试过,但这会导致类似的情况并导致不需要的查询
if($userForm->getData()->getPassword())
$user->setPlainPassword($userForm->getData()->getPassword());
else
$user->setPlainPassword($user->getPlainPassword());
有什么优雅的方法来处理这个用例吗?