Добавляю свой ответ
В администраторе 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
Предварительный просмотр разрешений модуля
person
M Khalid Junaid
schedule
04.02.2015