2010-06-26 2 views
0

У меня есть один элемент Zend_Form_Element_File, который отлично загружает загрузку. Я хочу знать, возможно ли использовать только элемент Zend_Form_Element_File и сохранить значение, которое было первоначально загружено? Как правило, такого рода вещи будут обрабатываться с помощью скрытого поля, но я хотел бы сохранить его в самом элементе Zend_Form_Element_File.Поддержание значения в Zend_Form_Element_File

Итак, как я хотел бы сделать это:

  1. Выберите файл (foo.txt)
  2. Загрузить файл с назначения HARDCODED
  3. Сохраните имя файла в базе данных
  4. Перезагрузите файл, но предварительно заполните файл (?) Сохраненным значением в базе данных (foo.txt)
  5. Передайте это значение обратно при отправке (или прочитайте вновь отправленное значение (bar.txt)

Я попытался переопределить метод setValue() (схватившись на соломинках), добавив пользовательский декоратор, который поместил скрытый элемент рядом с файловым элементом и укрепил все остальные декораторы и в основном сменил поле на скрытое поле.

У меня нет супер удачи в любом из-за разочарования в ограничениях.

Итак, можно ли сделать что-то подобное? Каков наилучший способ сделать это (кроме переключения между файлом или наличием пустого элемента)?

спасибо.

ответ

3

Вы не можете запрограммировать предварительный заполнение ввода HTML-файла, потому что вы никогда не узнаете местоположение файла на локальном диске пользователя. Это по дизайну.

Если вы уже загрузили файл и по какой-либо причине повторно отобразили форму (потому что какое-то другое поле не удалось проверить, или пользователь редактирует запись позже), вы не должны хотите в pre -популяция ввода файла. Вам нужно будет отображать (только для чтения) некоторую информацию о файле (это имя файла или изображение, возможно, миниатюра), и предоставлять и пустой ввод файла, который пользователь может, при необходимости, использовать для замены файл.

+0

Да, это лучшая практика. Есть ли у вас какие-либо знания о том, как это можно сделать в одном элементе Zend Form (например, Decorator, например)? – allnightgrocery

+0

Возможно, вы сможете использовать Decorator, просто добавьте Zend_Form_Element_File в какой-то более специфичный для приложения элемент. – timdev

Смежные вопросы