2010-06-26 79 views
0

我有一個處理上傳的Zend_Form_Element_File元素。我想知道的是,是否有可能只使用Zend_Form_Element_File元素,並仍然保持最初上傳的值?通常這種事情將通過隱藏字段來處理,但我想保留在Zend_Form_Element_File元素中。在Zend_Form_Element_File中維護值

所以,我想如何做到這一點:

  1. 選擇一個文件(foo.txt的)
  2. 上傳與硬編碼
  3. 在數據庫中存儲的文件名的目標文件
  4. 重新加載文件,但用數據庫中存儲的值預先填充文件元素(?)(foo.txt)
  5. 將該值傳回時提交(或讀取新提交的值(bar.txt)

我試着重寫setValue()方法(抓住吸管),添加一個自定義裝飾器,它將一個隱藏的元素放在文件元素旁邊,並且將所有其他的裝飾器和基本上更改爲隱藏的字段領域。

我沒有超級好運與任何因爲挫折的約束。

那麼,是否有可能做這樣的事情?做到這一點的最佳方法是什麼(除了在文件元素之間進行切換或者有一個空元素)?

謝謝。

回答

3

您不能有意義地預先填充HTML文件輸入,因爲您永遠不會知道文件在用戶本地磁盤上的位置。這是設計。

如果你已經有上傳的文件,並重新顯示無論出於何種原因形式(因爲其他一些領域無法驗證,或用戶被記錄後編輯),你不希望預 - 填充文件輸入。您需要顯示(只讀)關於該文件的一些信息(文件名,或者它是否爲圖像,可能是縮略圖),並提供和輸入文件,用戶可以選擇使用該文件輸入替換文件。

+0

是的,這是最佳做法。您是否有任何關於如何在單個Zend表單元素(例如Decorator)中完成這些工作的知識? – allnightgrocery 2010-06-26 19:59:55

+0

您可能可以使用裝飾器,只需將Zend_Form_Element_File擴展爲某種更具體的應用程序特定元素即可。 – timdev 2010-06-26 20:27:41