Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Zend_Form_Element_文件中维护值_Php_Zend Framework_Zend Form - Fatal编程技术网

Php 在Zend_Form_Element_文件中维护值

Php 在Zend_Form_Element_文件中维护值,php,zend-framework,zend-form,Php,Zend Framework,Zend Form,我有一个Zend_Form_元素\u File元素,可以很好地处理上传。我想知道的是,是否可以只使用Zend_Form_元素_File元素,并且仍然保持最初上传的值?通常,这类事情将通过一个隐藏字段来处理,但我希望将其保存在Zend_Form_元素_File元素本身中 那么,我想怎么做: 选择一个文件(foo.txt) 上载目标为硬编码的文件 将文件名存储在数据库中 重新加载文件,但使用数据库中存储的值(foo.txt)预填充file元素(?) 提交时将该值传递回(或读取新提交的值(bar.tx

我有一个Zend_Form_元素\u File元素,可以很好地处理上传。我想知道的是,是否可以只使用Zend_Form_元素_File元素,并且仍然保持最初上传的值?通常,这类事情将通过一个隐藏字段来处理,但我希望将其保存在Zend_Form_元素_File元素本身中

那么,我想怎么做:

  • 选择一个文件(foo.txt)
  • 上载目标为硬编码的文件
  • 将文件名存储在数据库中
  • 重新加载文件,但使用数据库中存储的值(foo.txt)预填充file元素(?)
  • 提交时将该值传递回(或读取新提交的值(bar.txt)
  • 我尝试过重写setValue()方法(抓住稻草),添加一个自定义修饰符,将隐藏元素放在file元素旁边,并禁用所有其他修饰符,基本上将字段更改为隐藏字段

    我在任何方面都没有超好运,因为我对这些限制感到沮丧

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


    谢谢。

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


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

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


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

    是的,这是最佳做法。您是否了解如何在单个Zend表单元素(例如装饰器)中完成此操作?您可以使用Decorator,只需将Zend_Form_Element_文件扩展为某种更特定于应用程序的元素。是的,这是最佳实践。您是否了解如何在单个Zend Form元素(例如Decorator)中实现这一点?您可以使用装饰器,只需将Zend_Form_Element_文件扩展为某种更特定于应用程序的元素。