ユーザーに割り当てられた役割を管理したいユーザー編集フォームがあります。
現在、複数選択リストがありますが、security.ymlで定義されているロール階層をリストに追加する方法がありません。
この情報をFormTypeクラスのフォームビルダーに取得する方法はありますか?
$builder->add('roles', 'choice', array(
'required' => true,
'multiple' => true,
'choices' => array(),
));
周りを見回すと、コントローラーのコンテナーから次の機能を使用してロールを取得できることがわかりました。
$roles = $this->container->getParameter('security.role_hierarchy.roles');
また、これをservices.xmlのFormTypeクラスに挿入される依存関係として設定できる可能性があることも発見しました。
<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
メソッドを呼び出さないようです。
では、どうすればこれを機能させることができますか?