我正在尝试在我的一个SonataAdmin实体的日历上显示不同的Events
。
我有两项服务,即实践和活动:
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 {1}}
关于如何将我需要的defined for the controller
值传递给路线的任何想法?
由于
答案 0 :(得分:1)
首先在EventAdmin类
中use Sonata\AdminBundle\Route\RouteCollection;
然后添加方法
protected function configureRoutes(RouteCollection $collection)
{
$collection->add('fetch_events', '{id}/fetch_events');
}
如果您使用 grep 在* nix系统上,则可以检查管理类的声明路由:
php app/console router:debug | grep events
将其用作
{{ path('fetch_events', { 'id': object.id } ) }}
答案 1 :(得分:0)
我认为错误在路径中
{{ path('fetch_events', { 'id': object.id } ) }}
Sonata自定义路由以基本路由名称admin为前缀:
{{ path('your_admin_base_route_name_fetch_events', { 'id': object.id } ) }}
自定义路由的简称可用于admin方法生成的URL
admin.generateUrl('fetch_events', { 'id': object.id } )