维护Zend_Form_Element文件中的值

时间:2010-06-26 18:55:15

标签: php zend-framework zend-form

我有一个Zend_Form_Element_File元素可以很好地处理上传。我想知道的是,是否可以仅使用Zend_Form_Element_File元素并仍然保持最初上传的值?通常这种事情会通过隐藏字段来处理,但我想将它保存在Zend_Form_Element_File元素中。

那么,我想怎么做:

  1. 选择文件(foo.txt)
  2. 使用目标硬编码上传文件
  3. 将文件名存储在数据库中
  4. 重新加载文件但使用数据库中的存储值(foo.txt)预填充文件元素(?)
  5. 提交时将该值传回(或读取新提交的值(bar.txt)
  6. 我已经尝试覆盖setValue()方法(抓住吸管),添加一个自定义装饰器,将隐藏元素放在文件元素旁边,并将所有其他装饰器连接起来,基本上将字段更改为隐藏字段。

    由于对约束的挫败,我没有超级好运。

    那么,有可能做这样的事吗?最好的方法是什么(除了在有文件元素或有空元素之间切换)?

    谢谢。

1 个答案:

答案 0 :(得分:3)

您无法有意义地预先填充HTML文件输入,因为您永远不会知道该文件在用户本地磁盘上的位置。这是设计的。

如果您已经上传了文件,并且由于某种原因重新显示表单(因为某些其他字段无法验证,或者用户稍后正在编辑该记录),则您不想要预先填充文件输入。您将要显示(只读)有关该文件的一些信息(它的文件名,或者它是图像,可能是缩略图),并提供用户可以选择的文件输入,可选,用于替换文件。