如何使Symfony表单仅用于验证后端数据?数据是使用AJAX提交的,我已经创建了一个与数据相对应的表单类,但$form->handleRequest($request);
由于某种原因没有提交它,错误是空的,我没有信息,也没有办法找出什么是错误。
将处理更改为$form->submit($request->request->all());
会引发类型错误,指出数据为空,而不是。
编辑:澄清 - 没有呈现的HTML表单!只有来自POST请求的纯数据。
答案 0 :(得分:1)
以下代码可用于处理您的表单。
/**
* Handles the creation form.
*
* @Route("/", name="demo_create")
* @Method("POST")
*
*/
public function createAction(Request $request)
{
//This is optional. Do not do this check if you want to call the same action using a regular request.
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'You can access this only using Ajax!'), 400);
}
// Create the form
$entity = new YourEntity();
$form = $this->createCreateForm($entity);
// Handle it using your request
$form->handleRequest($request);
// If valid, persist and flush the newly created entity
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return new JsonResponse(array('message' => 'Success!'), 200);
}
// Return the form with errors
return new JsonResponse(array(
'errors' => $form->getErrors(),
), 400);
}