У меня есть пользовательская форма редактирования, где я бы хотел назначить роли, назначенные пользователю.Как передать полный список/иерархию ролей безопасности классу FormType в Symfony2?
В настоящее время у меня есть список с несколькими выборами, но у меня нет способа заполнить его иерархией ролей, определенной в security.yml.
Есть ли способ получить эту информацию в построителе форм в классе FormType?
$builder->add('roles', 'choice', array(
'required' => true,
'multiple' => true,
'choices' => array(),
));
Оглядевшись I found, что я могу получить роль из контейнера в контроллере с:
$roles = $this->container->getParameter('security.role_hierarchy.roles');
Я также обнаружил, что я мог потенциально установить это как зависимость, который будет введен в FormType класс в services.xml:
<parameters>
<parameter key="security.role_heirarchy.roles">ROLE_GUEST</parameter>
</parameters>
<services>
<service id="base.user.form.type.user_form" class="Base\UserBundle\Form\UserType" public="false">
<tag name="form.type" />
<call method="setRoles">
<argument>%security.role_heirarchy.roles%</argument>
</call>
</service>
</services>
Это, однако, не работает, и, кажется, не всегда вызывать метод setRoles
.
Так как я могу заставить это работать?
'getDefaultOptions' был устаревшим в Symfony 2.1 и удалены в 2.3. Вместо этого используйте 'setDefaultOptions' (https://github.com/symfony/symfony/blob/master/UPGRADE-2.1.md#deprecations). – Tamlyn