Zend_Form_Element_File(找不到装饰器错误)

时间:2012-05-29 15:28:06

标签: zend-framework zend-form zend-form-element

我正在创建一个包含上传元素的表单。我用下面的代码创建了文件元素

 $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);

据我所知,工作得很好。它尝试向页面添加文件元素。我收到一条错误,上面写着“警告:找不到文件装饰器......无法在...中呈现文件元素”

正如您所看到的,我已将元素的装饰器设置为File装饰器,所以我不确定为什么会出现此错误?

值得注意的是,我删除了除viewHelper和PrepareElements之外的所有默认装饰器,并且我使用视图partial作为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>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我要仔细检查以确保文件修饰器未被清除或稍后重置,该错误表明您的表单的文件元素没有附加Zend_Form_Decorator_File装饰器。

在第859行的Zend/Form/Element/File.php中查找抛出此错误的函数。我怀疑文件装饰器正在从元素中删除。可能是它没有装饰器或者只是缺少装饰器{.1}。

希望有所帮助。