Проверка формы в symfony от вызова ajax

Мне нужно хранить данные из формы с помощью symfony через ajax, чтобы не обновлять браузер. Также мне нужно, чтобы в случае ошибок в полях можно было как-то их получить в ответ на этот вызов Ajax и показать мои ошибки формы, причем все без обновления страницы.

У меня есть форма с активом Symfony для проверки полей, и я делаю все идеально, если выполняется вызов ajax, хранятся данные или обновляется страница с ошибками, но мне нужно то же самое без обновления страницы.

Затем я поместил часть кода, который я использую:

контроллер:

public function createAction(Request $request)
{
    $entity = new Student();
    $form = $this->createCreateForm($entity);
    $form->handleRequest($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($entity);
        $em->flush();

        return $this->redirect($this->generateUrl('student_show', array('id' => $entity->getId())));
    }

    return $this->render('BackendBundle:Student:new.html.twig', array(
        'entity' => $entity,
        'form'   => $form->createView(),
    ));
}

Ajax Call:(Я не понимаю, как обрабатывать ошибки часть)

$('.form_student').submit(function(event) {
   event.preventDefault();

  $.ajax({
    type: 'POST',
    url: Routing.generate('student_create'),
    data: $(this).serialize(),

    success: function(data) {

      //clean form
      cleanForm($(this));

      //show success message
      $('#result').html("<div id='message'></div>");
      $('#message').html("<h2> student created</h2>").hide();
      $('#message').fadeIn('slow').delay(5000).fadeOut('slow');
      event.stopPropagation();   
    },
    error: function (xhr, desc, err) 
      {
        alert("error");
      }
    })
  return false;
});

Я видел, как некоторые возвращают JsonResponse из контроллера и используют Ajax, но я начинаю с Ajax и не знаю, как его использовать. Затем я поставил код, который я имею в виду:

 if ( $request->isXmlHttpRequest() ) {

    if ($form->isValid()) {
     //...
     return new JsonResponse(array('message' => 'Success!'), 200);
    }

    $response = new JsonResponse(array(
    'message' => 'Error',
    'form' => $this->renderView('BackendBundle:student:new.html.twig',
            array(
        'entity' => $entity,
        'form' => $form->createView(),
    ))), 400);

  return $response;
}

Если бы вы могли помочь мне лучше понять, как использовать Ajax для решения этой проблемы, я бесконечно благодарен, потому что для многих руководств, которые я видел, я все еще не очень хорошо понимаю.

Заранее большое спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос