Как предварительно заполнить элементы файла Zend - PullRequest
0 голосов
/ 25 июля 2010

У меня есть форма Zend, как это:

     $this->setName('Add Job');
  $id = new Zend_Form_Element_Hidden('id');
  $id->addFilter('Int');

  $name = new Zend_Form_Element_Text('name');
  $name->setLabel('Name')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('NotEmpty'); 

  $file = new Zend_Form_Element_File('file');
  $file->setLabel('File')
  ->setRequired(true);

  $category = new Zend_Form_Element_Checkbox('category');
  $category->setLabel('Express?')
  ->setRequired(true)
  ->setCheckedValue('2')
  ->setUncheckedValue('1');   

  $submit = new Zend_Form_Element_Submit('submit');
  $submit->setAttrib('id', 'submitbutton');

Действие "add" работает нормально, но я не работаю над действием "edit", используя это в моем контроллере:

 $id = $this->_getParam('id', 0);    
 if ($id > 0) {
      $jobs = new Application_Model_DbTable_Jobs();
      $form->populate($jobs->getJob($id));
 }

и форма заполняется просто отлично, за исключением элемента file. В БД у меня сохранено имя файла, и я хотел бы как-то отобразить его в форме редактирования - есть ли стандартный способ обработки этого в Zend?

Спасибо

Phil

Ответы [ 2 ]

6 голосов
/ 26 июля 2010

Вы не можете предварительно заполнить элемент ввода файла.
Это не ограничение Zend_Form. Html input-file-element не имеет атрибута "value".

0 голосов
/ 31 августа 2011

Я использовал трюк, чтобы передать имя файла в представление, так что можно, например, показать изображение рядом с загрузкой. В вашей форме введите это:

$this->getElement('image')->setAttrib('class', $this->_myParams['data']['image']);
$image->setDecorators(array(
            'File',
            array('ViewScript', array('viewScript' => '/ditta/_image.phtml', 'placement' => false)))
        );/

затем в скрипте просмотра используйте

$image = $this->element->getAttrib('class');//get name of file
$this->element->setAttrib('class', '');//delete class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...