2013-11-22 2 views
1

Я пытаюсь отобразить разные Events в календаре в одном из моих объектов SonataAdmin.SonataAdmin custom route

У меня есть 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] 

календарь отображается в editAction в Practice

Моя проблема, я пытаюсь для получения результатов от действия в 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'); 
} 

Вы можете проверить объявлены маршруты для класса администратора, если вы на * системы Никс с Grep:

php app/console router:debug | grep events 

использовать его как

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

Я думаю, что ошибка в пути

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

Sonata пользовательского маршрут с префиксом именем базового маршрута администратора:

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

коротким именем обычая маршрут может использоваться для URL-адреса, созданного методом администратора

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