Как я могу использовать 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>