自分の答えを追加する
Sonata 管理者で、セキュリティ ロールの表示をユーザー フレンドリーなビューに変更したい場合は、sonata のサービスの下でオーバーライドする必要があります
- sonata.user.editable_role_builder
- sonata.user.form.type.security_roles
そして、定義は以下のようになります
<services>
<service id="sonata.user.editable_role_builder" class="Acme\DemoBundle\Security\EditableRolesBuilder">
<argument type="service" id="security.context" />
<argument type="service" id="sonata.admin.pool" />
<argument>%security.role_hierarchy.roles%</argument>
</service>
<service id="sonata.user.form.type.security_roles" class="Acme\DemoBundle\Form\Type\SecurityRolesType">
<tag name="form.type" alias="sonata_security_roles" />
<argument type="service" id="sonata.user.editable_role_builder" />
</service>
</services>
これらのサービスでクラスを定義して、私が使用したデモコードAcme\DemoBundle
SecurityRolesType
クラスはソナタEditableRolesBuilder
に依存するようになり、独自のクラスに依存させる必要があるため、同じ方法でソナタのクラスへEditableRolesBuilder
の依存関係をオーバーライドする必要がありますRestoreRolesTransformer
すべてのロールをモジュールごとのロールの配列に変換し、SecurityRolesType.php
それを渡して、このファイルで表示できるすべてのカスタマイズを表示しました
また、親小枝ファイルを上書きするパスをコピーform_admin_fields.html.twig
しvendor\sonata-project\user-bundle\Resources\views
て追加することで上書きできるロールの小枝テンプレートを上書きします。app\Resources\SonataUserBundle\views\Form
注: このコードはアクセス許可 [作成、編集、表示、リスト、エクスポート、削除、マスター] のみを表示し、カスタム アクセス許可は処理しません。
最後のステップで、サービス ファイルをメイン構成ファイルにインポートします。config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: @AcmeDemoBundle/Resources/config/admin.xml }
完全なコード デモについては、以下のリポジトリにあります。
Sonata Admin Enhanced View For Security Roles
モジュール権限のプレビュー
