symfony2 - 文件上传因表单错误而丢失

时间:2015-01-03 16:50:37

标签: php forms symfony doctrine-orm

我已经按照教程:http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html

但是当我上传文件时遇到问题处理情况,但是其他字段不符合验证标准,并且用户被指示修复表单错误。然后,当用户修复问题并点击提交按钮时,他不再拥有表单中的有效图像,并显示丢失的文件错误。

我准备了一个小示例项目来说明这种行为:

https://github.com/Jaslanin/sf_upload_form_error

重现此行为的步骤:

  1. 在浏览器中打开web / dir项目
  2. 在名称字段中输入字符串“123”
  3. 设置文件字段的图像文件
  4. 点击提交按钮
  5. 将名称字段更改为“123456”
  6. 点击提交按钮
  7. 观察表单缺少文件错误
  8. 现在我使用“如何使用Doctrine处理文件上传”教程中的步骤来处理此问题,但不使用lifecyclecallbacks。我运行 - >手动上传,如果会话中存在错误存储文件路径。

    它有效,但我正在为这个问题寻找更清晰的解决方案。

1 个答案:

答案 0 :(得分:1)

在页面上渲染表单时,所有输入字段都填充了实体或数组中的值。这里的关键是你没有数据来预先填充文件输入字段。所以它呈现为空输入。当用户点击步骤6提交时,没有选择/上传文件。在这种情况下,具有会话存储的上载文件路径的解决方案是正确的解决方案。 我还建议您向用户显示,当会话中有一个文件已经提交时。