Zend framework2 ZF2可以选择在表单中更改用户密码
我想要一个表单,在这里登录的用户可以更改他的用户数据。他可以选择插入新密码。我试图删除“password”和“passwordVerification”字段的inputfilter,如果发布的密码为空,但我不知道如何在我的服务中处理保存,密码不会被覆盖 控制器动作Zend framework2 ZF2可以选择在表单中更改用户密码,zend-framework2,Zend Framework2,我想要一个表单,在这里登录的用户可以更改他的用户数据。他可以选择插入新密码。我试图删除“password”和“passwordVerification”字段的inputfilter,如果发布的密码为空,但我不知道如何在我的服务中处理保存,密码不会被覆盖 控制器动作 public function indexAction() { $identity = $this->authentication()->getIdentity(); $userService = $thi
public function indexAction() {
$identity = $this->authentication()->getIdentity();
$userService = $this->userService;
$form = $this->userForm;
$form->bind($identity);
$request = $this->getRequest();
if ($request->isPost()) {
$form->setData($request->getPost());
if ($form->get('password')->getValue() == '') {
$validationGroup = $form->getValidationGroup();
$passwordKey = array_search('password', $validationGroup);
$passwordVerificationKey = array_search('passwordVerification', $validationGroup);
unset($validationGroup[$passwordKey]);
unset($validationGroup[$passwordVerificationKey]);
$form->setValidationGroup($validationGroup);
$form->getInputFilter()->remove('password');
$form->getInputFilter()->remove('passwordVerification');
}
if ($form->isValid()) {
$userService->saveUser($form->getData());
$this->flashMessenger()->addSuccessMessage('Data has been saved successfully');
return $this->redirect()->toRoute('admin/account');
}
}
return array(
'userForm' => $form
);
}
用户服务
public function saveUser(User $user) {
if ($password = $user->getPassword()) {
$user->setPassword($this->authenticationService->getAdapter()->getBcrypt()->create($password));
}
$this->userRepository->save($user);
}
当我这样做时,我在我的用户实体中使用use a unmapped password属性(例如passwordForm),该属性在表单中使用,因此不会覆盖原始密码。如果passwordForm字段已填充,则可以使用该值覆盖原始密码