Я хотел бы показать в форме SynfomyType выбранный ввод, который предлагает только пользователей с определенной ролью.
В настоящее время я пишу приложение, в котором участвуют некоторые базовые пользователи и некоторые суперпользователи, которыеотвечает за основных пользователей.
Поэтому, когда я регистрирую нового пользователя, я хочу иметь возможность назначить его назначенному «суперпользователю», которым будет управлять.
Но когда я пытаюсь сделать поле entityType в моем registrationType, чтобы выбрать супер-пользователя для назначения, я не знаю, как отобразить только пользователей с ROLE_MANAGER в выборе.Я только понимаю, как отобразить всех пользователей.
Все пользователи находятся в одной таблице.Я делаю различие между ними, используя только систему ролей Symfony.
Я пытался взглянуть на решение query_builder, но я не понимал, как смотреть в массивах с параметром "where" или применять иерархию ролей.в этом запросе.
Мой formType выглядит следующим образом.Я пытаюсь отображать только пользователей с ROLE_MANAGER и выше в их ролях в «менеджере» входного объекта entityType.
Роли хранятся в таких массивах, как это: ["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'],
]);
}
}
Может ли кто-нибудь указать мне правильное направление?
Большое спасибо!