Я хочу показать различное значение в поле ролей, если предоставлено право администратора и простого пользователя.
Например, если грант равен role_admin, я увижу в полях ролей User и admin
если это role_user, у меня будет juste User.
Я использую FOSuser, и это мой UserType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name')
->add('surname')
->add('email')
->add('mobile')
->add('roles', ChoiceType::class, array(
'choices' => array(
'ADMIN' => 'ROLE_ADMIN',
'SIMPLE USER' => 'ROLE_USER'),
'multiple'=>true
));
}/**
* {@inheritdoc}
*/
public function getParent()
{
return BaseRegistrationFormType::class;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User'
));
}




Передайте текущего пользователя как вариант вашей формы. Затем переберите $user->getRoles(), чтобы сделать свой выбор.
Например, вот так:
use AppBundle\Entity\User;
public function buildForm(FormBuilderInterface $builder, array $options)
{
$user = $options['user'];
$builder->add('name')
->add('surname')
->add('email')
->add('mobile');
if ($user instanceof User){
$choices = [];
foreach($user->getRoles() as $key => $role){
/* Do your key transform process here */
$choices[$key] = $role;
}
$builder->add('roles', ChoiceType::class, array(
'choices' => $choices,
'multiple'=>true
));
}
}/**
* {@inheritdoc}
*/
public function getParent()
{
return BaseRegistrationFormType::class;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User',
'user' => null
));
}
Затем передайте текущего пользователя при инициализации формы.