0

我创建了一个自定义列表视图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 令牌无效

有任何想法吗?

4

1 回答 1

2

检查您的视图中是否有以下行:

{{ form_rest(form) }}

因为我相信您是一个一个地渲染表单字段,而不是一次渲染整个表单,并且忘记渲染包含 CSRF 令牌的表单的其余部分。

于 2013-10-21T11:42:03.973 回答