【发布时间】:2019-07-10 16:22:49
【问题描述】:
我想在 Synfomy 表单中显示一个选择输入,它只建议具有特定角色的用户。
我目前正在编写一个应用程序,其中涉及一些基本用户和一些负责基本用户的超级用户。
所以每当我注册一个新用户时,我都希望能够将他分配给一个指定的“超级用户”来管理。
但是当我尝试在我的registrationType中创建一个entityType字段来选择要分配的超级用户时,我不知道如何只显示选择中带有ROLE_MANAGER的用户。我只知道如何显示所有用户。
所有用户都在同一个表中。 我只使用 Symfony 角色系统来区分它们。
我尝试查看 query_builder 解决方案,但我不明白如何使用“where”参数查看数组或在该查询中应用角色层次结构。
我的表单类型如下。 我试图在“经理”实体类型选择输入中仅显示角色具有 ROLE_MANAGER 及更高级别的用户。
角色存储在这样的数组中:["ROLE_USER", "ROLE_MANAGER","ROLE_ADMIN"]... 所以 user.roles 返回这种数组。
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email')
->add('username')
->add('manager', EntityType::class,[
'class' => User::class,
'choice_label' => 'username',
'query_builder' => function (EntityRepository $er){
return $er->createQueryBuilder('u')
->orderBy('u.username', 'ASC');
}])
->add('password',PasswordType::class)
->add('confirm_password',PasswordType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
'validation_groups' => ['Default', 'registration'],
]);
}
}
谁能指出我正确的方向?
非常感谢!
【问题讨论】:
标签: symfony4