我将此ViewScript用于我的标准表单元素:
<div class="field" id="field_<?php echo $this->element->getId(); ?>">
<?php if (0 < strlen($this->element->getLabel())) : ?>
<?php echo $this->formLabel($this->element->getName(), $this->element->getLabel());?>
<?php endif; ?>
<span class="value"><?php echo $this->{$this->element->helper}(
$this->element->getName(),
$this->element->getValue(),
$this->element->getAttribs()
) ?></span>
<?php if (0 < $this->element->getMessages()->length) : ?>
<?php echo $this->formErrors($this->element->getMessages()); ?>
<?php endif; ?>
<?php if (0 < strlen($this->element->getDescription())) : ?>
<span class="hint"><?php echo $this->element->getDescription(); ?></span>
<?php endif; ?>
</div>
Run Code Online (Sandbox Code Playgroud)
尝试单独使用ViewScript会导致错误:
表单捕获的异常:找不到文件装饰器...无法呈现文件元素
看看这个FAQ揭示了我的部分问题,我更新了我的表单元素装饰器,如下所示:
'decorators' => array(
array('File'),
array('ViewScript', array('viewScript' => 'form/field.phtml'))
)
Run Code Online (Sandbox Code Playgroud)
现在它将文件元素渲染两次,一次在我的视图脚本中,以及在视图脚本之外使用文件元素的额外元素:
<input type="hidden" name="MAX_FILE_SIZE" value="8388608" id="MAX_FILE_SIZE" …Run Code Online (Sandbox Code Playgroud) zend-framework decorator zend-form zend-view zend-form-element