【问题标题】:Symfony2: handleRequest() is not submitting the formSymfony2:handleRequest() 没有提交表单
【发布时间】:2014-02-03 03:10:37
【问题描述】:

我在 Symfony 2.3.5 中的 handleRequest 方法遇到了奇怪的问题。

我正在使用 handleRequest ($editForm->handleRequest($request)) 提交表单,并且在 dev 上一切正常。但是在 prod 环境中它不起作用。我已经调试了所有东西,我发现它没有提交这个表单。

我已经设法通过改变来解决这个问题

$editForm->handleRequest($request)

$editForm->submit($request->request->get($editForm->getName()))

但是有人能告诉我为什么 handleRequest 在 prod 环境中不适合我吗?

我已删除所有缓存。

编辑: 我还提醒自己,它在创建方面非常有用,但在编辑/更新方面却不行。

【问题讨论】:

  • 通过 AJAX 提交数据时遇到此问题?检查this answer

标签: php forms symfony


【解决方案1】:

您在创建 $editForm 时是否设置了方法参数?

$editForm = $this->createForm(new TaskType(), $task, array(
    'action' => $this->generateUrl('edit_task'),
    'method' => 'PUT',
));

$editForm->handleRequest($request);

此外,您可能需要在配置中设置 http_method_overridehttp://symfony.com/doc/current/reference/configuration/framework.html#http-method-override

【讨论】:

  • 奇怪的是,您不必使用 $form->submit 执行此操作。多么令人头疼的原因
  • 我也遇到了同样的问题,但实际上不必在选项中添加“动作”,我只需要添加“方法”=>“PUT”。我的情况可能会有所不同,因为我的项目只是一个 REST API。
  • @JeremyZerr 是的,如果您只是构建一个 API,您将永远不需要在前端呈现表单,因此不需要操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 2016-01-24
  • 2014-06-28
  • 2014-02-07
  • 2014-09-12
  • 1970-01-01
相关资源
最近更新 更多