0
我正在创建一个带有上传元素的表单。我创建了以下代码的文件元素Zend_Form_Element_File(没有修饰器发现错误)
$image = new Zend_Form_Element_File('image');
$image->setAttrib('title','Listing Image:')
->addDecorator('File')
->addValidator('Size', false, 204800)
->addValidator('Extension', false, 'jpg,png,gif');
$this->addElement($image);
只要我能告诉工作正常。它试图将一个文件元素添加到页面。我得到一个错误,说:“警告:找不到文件装饰器...无法渲染文件元素...”
正如你所看到的,我已经将元素的装饰器设置为文件装饰器,所以我不确定为什么我得到这个错误?
值得注意的是我已经删除了除viewHelper和PrepareElements之外的所有默认装饰器,并且我使用视图部分作为viewHelper来显示输出。只需要这个是必需的我还包括下面。
<form method="<?php echo $this->element->getMethod(); ?>" action="<?php echo $this->element->getAction(); ?>">
<div class="boxmiddle-Holder">
<div class="boxmiddle-content">
<table border="0" cellspacing="2" cellpadding="3" class="dataTable">
<?php foreach($this->element->getElements() as $element): ?>
<!-- if not a button then display label -->
<tr>
<td><label for="<?php echo $element->getName(); ?>"><?php echo $element->getAttrib('title'); ?></label></td>
<td class="normal"><?php echo $element; ?></td>
<?php if($element->getMessages()) {
foreach($element->getMessages() as $message) { ?>
<td> <?php echo "<p class='elementError'>".$message."</p>"; ?></td>
<?php }
}
?>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
任何想法?
我检查了所有的代码,我似乎无法找到删除装饰器的任何地方。我能想到的唯一的事情是,我的视图部分用于渲染上面包含的表单,可能不会输出装饰器,即使它具有一个集合? – jjmu15
在你的循环中,在File元素上尝试'var_dump($ element-> getDecorators());'看看结果是什么。我很好奇,看看它注册了什么。在创建元素时,您可能需要将' - > addDecorator('File')'改为' - > setDecorator(array('File'))',以便删除所有现有元素并替换为文件修饰器。 – drew010
我对它排序。在窗体的底部,我设置了表单元素装饰器。当使用它时,它似乎覆盖了我为各个元素设置的装饰器。我已经做了什么来解决它是删除表单底部的一般设置,并指定它需要的装饰器的每个元素。 – jjmu15