2013-10-01 43 views
0

我需要建立一個新的角色叫做狀態在鏈接 see image出現在用戶CRUD像圖像的角色管理器添加新的角色,這個角色是基於定義的自定義路線在管理員類和一個自定義控制器中。SonataAdmin:從管理類中定義的路由

我已經解決了修改配置文件,在ROLE的默認列表中添加information參數,但是這將適用於服務中定義的所有管理類,並且我不希望這樣,我想要定義ROLE一個特定的管理員類,也可以出現在角色管理器中,以便分配給用戶。

任何建議是值得歡迎的

感謝您的幫助!

這是我的配置:

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 

AdminClass

//.. 
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> 

控制器

use Sonata\AdminBundle\Controller\CRUDController; 

class SolicitudMantenimientoController extends CRUDController { 
//.. 
public function statusAction() { 
    //... code here 
    return new Response('<html><body>Test</body></html>'); 
} 

回答

1

我終於解決了這個問題,我閱讀文檔更深(Role Handler),我做在後續文件中的下一個變化:

security.yml

我添加了一個新角色在安全文件,像後續的role_hierarchy部分:

security: 
    role_hierarchy: 
     ROLE_SONATA_SOLICITUDMANTENIMIENTO: 
      - ROLE_SONATA_ADMIN_SOLICITUDMANTENIMIENTO_STATUS 

當我加入了新角色,它出現在用戶CRUD的角色管理器,像圖像在鏈路see image

和它的工作原理!!! ...