我在sonata admin
创建了一个自定义列表视图,以显示日历。
我正在尝试动态地向日历添加事件,但是我收到错误,CSRF
令牌无效。
我有以下代码:
public function listAction()
{
if (false === $this->admin->isGranted('LIST')) {
throw new AccessDeniedException();
}
$datagrid = $this->admin->getDatagrid();
$formView = $datagrid->getForm()->createView();
// set the theme for the current Admin Form
$this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme());
$em = $this->getDoctrine()->getManager();
$events = $em->getRepository('BMCrmBundle:Event')->findAll();
$event = new Event();
$formEvent = $this->createForm(new EventType(), $event );
return $this->render($this->admin->getTemplate('list'), array(
'action' => 'list',
'form' => $formView,
'datagrid' => $datagrid,
'csrf_token' => $this->getCsrfToken('sonata.batch'),
'events' => $events,
'formEvent' => $formEvent->createView()
));
}
视图
var url = "{{ path('create_event', { _sonata_admin: 'bm.crm.admin.event'} ) }}";
$.post(url, form.serialize(), function(data) {
alert(data);
});
这始终返回CSRF令牌无效
有什么想法吗?
答案 0 :(得分:2)
检查您的视图中是否有以下行:
{{ form_rest(form) }}
因为我相信您一个接一个地渲染表单字段而不是整个表单,而忘记呈现包含CSRF令牌的表单的其余部分。