2013-11-22 53 views
1

我想在我的一個SonataAdmin實體的日曆上顯示不同的EventsSonataAdmin自定義路線

我有2個服務,實踐和事件:

bm.user.admin.practice: 
    class: BM\UserBundle\Admin\PracticeAdmin 
    tags: 
    - { name: sonata.admin, manager_type: orm, group: cvp_users, label: Practice } 
    arguments: [bm.user.admin.practice, BM\UserBundle\Entity\Practice, BMUserBundle:PracticeAdmin] 

bm.crm.admin.event: 
    class: BM\CrmBundle\Admin\EventAdmin 
    tags: 
    - { name: sonata.admin, manager_type: orm, group: cvp_users, label: Schedule } 
    arguments: [bm.crm.admin.event, BM\CrmBundle\Entity\Event, BMCrmBundle:EventAdmin] 

日曆顯示在的Practice

我的問題是editAction,我想從EventAdminController得到結果

/** 
* Fetch Events based on User. 
* 
* @Route("/admin-events-create/{id}", name="create_event", options={"expose"=true}) 
* @Method("GET|POST") 
* @Template() 
*/ 
public function fetchEventsAction(Request $request, $id) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $user = $em->getRepository('BMUserBundle:User')->find($id); 
    $events = $em->getRepository('BMCrmBundle:Event')->findAllEventsByUser($user->getId()); 

} 

我試圖把這種使用下列內容:

{{ path('fetch_events', { _sonata_admin: 'bm.crm.admin.events'}) }}

但是卻丟失了,我需要在控制器中使用id

將其更改爲:

{{ path('fetch_events', { id: 'myObj.id', _sonata_admin: 'bm.crm.admin.event'}) }}或任何類似總是給我:

There is no _sonata_admin defined for the controller

我如何能通過id值,我需要的路線任何想法?

感謝

回答

1

先在的EventAdmin類

use Sonata\AdminBundle\Route\RouteCollection; 

再加入方法

protected function configureRoutes(RouteCollection $collection) 
{ 
    $collection->add('fetch_events', '{id}/fetch_events'); 
} 

您可以檢查申報管理類的路線,如果你是在* nix系統的grep

php app/console router:debug | grep events 

使用它作爲

{{ path('fetch_events', { 'id': object.id }) }} 
0

我認爲錯誤是在路徑

{{ path('fetch_events', { 'id': object.id }) }} 

索納塔自定義路由前綴與管理的基本路線名稱:

{{ path('your_admin_base_route_name_fetch_events', { 'id': object.id }) }} 

短定製的名路由可用於管理方法生成的URL

admin.generateUrl('fetch_events', { 'id': object.id })