gpt4 book ai didi

symfony - SonataAdminBundle 无法更新用户密码

转载 作者:行者123 更新时间:2023-12-04 23:19:38 24 4
gpt4 key购买 nike

我无法通过 Sonataadmin 仪表板更新用户密码。

我使用 symfony2 FosUserBundle2.0 SonataAdminBundle(但 不是 使用 SonataUserBundle)并按照文档去做。
MyUserBundle\Admin\UserAdmin.php类 UserAdmin 像这样扩展 Admin

protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
......
->add('plainPassword', 'repeated', array(
'type' => 'password',
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password'),
'second_options' => array('label' => 'form.password_confirmation'),
'invalid_message' => 'fos_user.password.mismatch',
'required' => false,
)
)
..
}

我使用时没有问题 sonataadminbundle仪表板创建新用户,但是当我使用仪表板更新密码时,数据库中的密码不会更改。

其他人可以更新,但密码,我不知道为什么。没有任何错误信息。

我是 symfony2 的新手,有人帮我吗?

感谢 kwozny,现在我修好了~
我不更改函数 configureFormFields 代码,只是按照 kwozny 的建议,添加以下代码。我不知道为什么,但我工作了!
我可以更新密码,当我更新其他密码时(密码字段为空)密码不会更改。
public function prePersist($object)
{
parent::prePersist($object);

}
public function preUpdate($object)
{
parent::preUpdate($object);

}

最佳答案

那是因为您必须捕获对象 User(preUpdate() 和 prePersist())并使用 $user->setPlainPassword 设置密码。这就是我的代码的样子:

反而:

->add('plainPassword', 'repeated', array(
'type' => 'password',
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password'),
'second_options' => array('label' => 'form.password_confirmation'),
'invalid_message' => 'fos_user.password.mismatch',
'required' => false,
)
)

我有:
            ->add('newPass', 'text', array(
'label' => 'New password (empty filed means no changes)',
'required' => FALSE
))

然后在同一个管理文件中:
public function prePersist($object) {
parent::prePersist($object);
$this->updateUser($object);
}

public function preUpdate($object) {
parent::preUpdate($object);
$this->updateUser($object);
}

public function updateUser(\AppBundle\Entity\User $u) {
if ($u->getNewPass()) {
$u->setPlainPassword($u->getNewPass());
}

$um = $this->getConfigurationPool()->getContainer()->get('fos_user.user_manager');
$um->updateUser($u, false);
}

关于symfony - SonataAdminBundle 无法更新用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com