Администратор Sonata — Пользовательский вызов AJAX

Я создал собственное представление списка в 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 недействителен

Есть идеи?


person user1970557    schedule 21.10.2013    source источник


Ответы (1)


Проверьте, есть ли, по вашему мнению, следующая строка:

{{ form_rest(form) }}

потому что я считаю, что вы визуализируете поля формы одно за другим, а не всю форму сразу, и забыли отобразить остальную часть формы, которая содержит токен CSRF.

person Udan    schedule 21.10.2013
comment
Я заметил, и это, кажется, решило мою проблему. Спасибо - person user1970557; 21.10.2013
comment
Есть ли простой способ проверить форму через ajax? - person user1970557; 21.10.2013