Как я могу использовать ViewScripts для файловых элементов Zend_Form?

Я использую этот ViewScript для моих стандартных элементов формы:


   getLabel())) : ?>
      formLabel($this->element->getName(), $this->element->getLabel());?>
   
   <span class="value">{$this->element->helper}(
      $this->element->getName(),
      $this->element->getValue(),
      $this->element->getAttribs()
   ) ?></span>
   getMessages()->length) : ?>
       formErrors($this->element->getMessages()); ?>
   
   getDescription())) : ?>
      <span class="hint">element->getDescription(); ?></span>
   

Попытка использовать только этот ViewScript приводит к ошибке:

Исключение, обнаруженное формой: не найден декоратор файла ... невозможно отобразить элемент файла

Смотря наэтот FAQ раскрыл часть моей проблемы, и я обновил свои декораторы элементов формы следующим образом:

'decorators' => array(
   array('File'),
   array('ViewScript', array('viewScript' => 'form/field.phtml'))
)

Теперь это's визуализирует элемент file дважды, один раз в моем скрипте вида, и дополнительные элементы с элементом file вне моего скрипта вида:





    Upload File
    <span class="value"></span>

Любые идеи о том, как справиться с этим правильно с помощью ViewScript?

ОБНОВИТЬ: По мотивам Шонарешение здесьмой окончательный код:

Элемент формы:

$this->addElement('file', 'upload_file', array(
    'disableLoadDefaultDecorators' => true,
    'decorators' => array('File', array('ViewScript', array(
        'viewScript' => '_form/file.phtml',
        'placement' => false,
    ))),
    'label' => 'Upload',
    'required' => false,
    'filters' => array(),
    'validators' => array(array('Count', false, 1),),
));

Посмотреть скрипт:

element->getType())));
if ($this->element->isRequired()) {
    $class .= ' required';
}
if ($this->element->hasErrors()) {
    $class .= ' errors';
}
?>

    getLabel())): ?>
        formLabel($this->element->getFullyQualifiedName(), $this->element->getLabel());?>
    
    <span class="value">content; ?></span>
    element->hasErrors()): ?>
        formErrors($this->element->getMessages()); ?>
    
    getDescription())): ?>
        <p class="hint">element->getDescription(); ?></p>
    

Ответы на вопрос(7)

Ваш ответ на вопрос