Как настроить поле формы на основе пользовательских ролей в Symfony2 / 3?
Есть ли правильный способ настроить форму в зависимости от роли пользователя, который ее запрашивает?
Мой сценарий довольно прост: мне нужно скрыть некоторые поля, если у пользователя нетROLE_ADMIN
предоставляется. Я пытался избежать отображения поля на Twig, но
{% if is_granted('ROLE_ADMIN') %}
{{form_row(form.field)}}
{% endif %}
не работает, потому что строитель формы обходит эту проверку.
Версия Symfony:2.8.2
РЕДАКТИРОВАТЬ
Благодаря @Rooneylпредложение Я нашел решение:
Сначала вам нужно добавить ключ 'role' к параметру options. Итак, в configureOptions ()$options['role']
всегдаROLE_USER.
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyBundle\Entity\Ticket',
'role' => 'ROLE_USER'
));
}
Затем в контроллере вы должны передатьgetRoles()
массив:
$user_roles = $this->getUser()->getRoles();
$form = $this->createForm('MyBundle\Form\TicketType', $ticket, array('role' => $user_roles));