Symfony仅在后端表单

时间:2016-02-11 18:25:26

标签: php forms symfony

如何使Symfony表单仅用于验证后端数据?数据是使用AJAX提交的,我已经创建了一个与数据相对应的表单类,但$form->handleRequest($request);由于某种原因没有提交它,错误是空的,我没有信息,也没有办法找出什么是错误。 将处理更改为$form->submit($request->request->all());会引发类型错误,指出数据为空,而不是。

编辑:澄清 - 没有呈现的HTML表单!只有来自POST请求的纯数据。

1 个答案:

答案 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);     
}