Symfony SonataAdmin:从admin类中定义的路由添加新角色

Symfony SonataAdmin:从admin类中定义的路由添加新角色,symfony,sonata-admin,role,Symfony,Sonata Admin,Role,我需要创建一个名为STATUS的新角色,以显示在用户CRUD的角色管理器中,如链接处的图像 ,此角色基于admin类中定义的自定义路由和自定义控制器 我已经决定修改配置文件,添加一个带有默认角色列表的信息参数,但这将应用于服务中定义的所有管理类,我不希望这样,我希望为特定的管理类定义角色,也可以在角色管理器中显示以分配用户 欢迎提出任何建议 谢谢你的帮助 以下是我的配置: config.yml #SONATAADMINBUNDLE sonata_admin: security: hand

我需要创建一个名为STATUS的新角色,以显示在用户CRUD的角色管理器中,如链接处的图像 ,此角色基于admin类中定义的自定义路由和自定义控制器

我已经决定修改配置文件,添加一个带有默认角色列表的
信息
参数,但这将应用于服务中定义的所有管理类,我不希望这样,我希望为特定的管理类定义角色,也可以在角色管理器中显示以分配用户

欢迎提出任何建议

谢谢你的帮助

以下是我的配置:

config.yml

#SONATAADMINBUNDLE
sonata_admin:
security:
    handler: sonata.admin.security.handler.role
    information:
        EDIT: EDIT
        LIST: LIST
        CREATE: CREATE
        VIEW: VIEW
        DELETE: DELETE
        EXPORT: EXPORT
        OPERATOR: OPERATOR
        MASTER: MASTER
        STATUS: STATUS
管理类

//..
use Sonata\AdminBundle\Route\RouteCollection;

class SolicitudMantenimientoAdmin extends Admin
{
    //...
    protected function configureRoutes(RouteCollection $collection)
    {
        $collection->add('status',$this->getRouterIdParameter().'/status');
    }
}
服务

<service id="sonata.admin.solicitudmantenimiento" class="Minsal\SimBundle\Admin\SolicitudMantenimientoAdmin">
      <tag name="sonata.admin" manager_type="orm" group="Solicitud" label="Solicitud Mantenimiento" />
      <argument />
      <argument>Minsal\SimBundle\Entity\SolicitudMantenimiento</argument>
      <argument>MinsalSimBundle:SolicitudMantenimiento</argument>
</service>

Minsal\SimBundle\Entity\requestudmantenimiento
MinsalSimBundle:征求Mantenimiento
控制器

use Sonata\AdminBundle\Controller\CRUDController;

class SolicitudMantenimientoController extends CRUDController {
//..
public function statusAction() {
    //... code here
    return new Response('<html><body>Test</body></html>');
}
使用Sonata\AdminBundle\Controller\CRUDController;
类requestudMantenomientController扩展了CRUDController{
//..
公共功能状态操作(){
//…这里是代码
返回新的响应(“测试”);
}

最后我解决了这个问题,我更深入地阅读了文档(),我在下面的文件中做了以下更改:

security.yml

我在安全文件的role_hierarchy部分添加了一个新角色,如下所示:

security:
    role_hierarchy:
        ROLE_SONATA_SOLICITUDMANTENIMIENTO:
            - ROLE_SONATA_ADMIN_SOLICITUDMANTENIMIENTO_STATUS
当我添加新角色时,它出现在用户CRUD的角色管理器中,就像链接中的图像一样

而且很有效