我想在this related question中提出评论,但没有必要的代表。
我将Sonfony 4(flex)与Sonata Admin捆绑包一起使用,我想为用户创建一个“管理员”,这将允许通过Sonata后端管理应用程序用户。麻烦在于密码字段。
我知道我可以使用Sonata用户捆绑包,也可以安装FOSUserBundle并按照链接的问题中的建议使它正常工作,但是没有人有任何经验,或者建议如何在不安装FOS捆绑包的情况下使它起作用吗?
我尝试按照链接的问题中的步骤进行操作,但是由于缺少“ plainPassword”字段且缺少关联的getter和setter而遇到错误, 鉴于这些字段在我的(非FOS)用户实体上不存在,因此是有道理的,因此我将字段类型更改为password(请参见下文),但是现在,很明显,密码以明文形式保存在数据库中。
// src/Admin/UserAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
$pass_required = false;
if (!$this->subject->getId()) {
$pass_required = true;
}
$formMapper->add('email')
->add('firstName')
->add('lastName')
->add('password', RepeatedType::class, [
'data' => null,
'type' => PasswordType::class,
'first_options' => ['label' => 'Password'],
'second_options' => ['label' => 'Confirm Password'],
'invalid_message' => 'Passwords don\'t match',
'required' => $pass_required,
]);
}
如果我绝对必须遵循安装FOS User Bundle的路线,那就是我必须要做的,但是我很想听听我如何避免这种额外依赖的想法,因为很多FOSUserBundle功能对于这个项目来说太过分了。
更新: 我走了安装FOSUserBundle的路线,并能够将其连接到Sonata admin,以至于它可以让我在表单定义中使用plainPassword字段,并且一切正常。
但是,同时没有安装Sonata用户捆绑包,我没有将便捷的注销按钮添加到管理模板中。 我可以将Sonata User捆绑软件添加到我的项目中,但我最近发现的大多数文档似乎都认为symfony守卫是可行的方式,而且似乎不兼容(或者至少很难兼容),不幸的是使用FOSUser捆绑包进行配置。
我发现this page,重复信息here,其中包含有关如何使用更基本的用户实体且没有FOS捆绑包的登录身份验证的详细说明, 我已经设法使它起作用,但是该指南没有提供有关如何创建在此配置下可以使用的UserAdmin或如何在管理模板中放置注销按钮/ useraccount菜单的建议
现在我还剩下 2个障碍:
templates/SonataOverrides/user_block.html.twig
templates:
user_block: App:templates:SonataOverrides:user_block.html.twig
使用
sonata_block:
blocks:
# enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
sonata.user.block.menu:
sonata.user.block.account:
不起作用。有什么建议吗?