Я заметил, что я считаю ошибкой в Zend_Form_Element_File.Другие могут проверить это и сказать мне, если они получают тот же результат.В неудачной форме все поля заполняются заново, кроме значения Element_File.
Моя форма имеет 2 текстовых поля и 1 поле файла, и все они обязательны для заполнения.
$name = new Zend_Form_Element_Text('name');
$name->setLabel('Name');
$name->setRequired(true);
$this->addElement($name);
$name2 = new Zend_Form_Element_Text('name2');
$name2->setLabel('Name2');
$name2->setRequired(true);
$this->addElement($name2);
$file = new Zend_Form_Element_File('file');
$file->setLabel('Test file')
->setDestination(APPLICATION_PATH);
$file->setRequired(true);
$this->addElement($file);
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Submit')
$this->addElement($submit);
Обычно при сбое формы она автоматически заполняет все поля, которые были заполнены, но неработать для поля файла, и я должен вручную выбрать файл, в дополнение к исправлению других полей, которые необходимо исправить.
Прежде всего, могут ли другие это подтвердить?
Я думаю, что проблема связана с разметкой поля файла.Я вижу, что первый <input>
- это размер файла, а затем сам файл входит во второй <input>
.
<dd>
<input type="hidden" id="MAX_FILE_SIZE" value="67108864" name="MAX_FILE_SIZE">
<input type="file" id="file" name="file">
</dd>
и при отправке действительной формы данные записи показывают только первое <input>
поля файла, которое имеет размер [MAX_FILE_SIZE] => 67108864
, а не сам файл.
Array (
[name] => test
[MAX_FILE_SIZE] => 67108864
)
Когда форма действительна, загрузка работает нормально, поэтому я не знаю ничего плохого в самом поле файла, но в случае неудачной формы (правильное поле файла, но одно из других полей недействительно), поле файла является единственным полем, которое не заполняется повторно при отображении формы.Так это ошибка?Раздражает необходимость повторного добавления файла, когда с ним все в порядке.Есть ли обходной путь, о котором кто-то может подумать.Я попытался заполнить вручную в случае неправильной формы, надеясь, что это приведет к заполнению поля файла, что-то вроде этого, но это также не сработало.
if(//valid form){
//process the form
} else {
$form->populate($this->_request->getPost());
}