0

アップロード要素を含むフォームを作成しています。以下のコードでファイル要素を作成しました

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

何か案は?

4

1 に答える 1

1

File デコレータが後でクリアまたはリセットされていないことを再確認します。このエラーは、フォームの file 要素にZend_Form_Decorator_Fileデコレータが接続されていないことを示しています。

Zend/Form/Element/File.phpこのエラーをスローする関数については、行 859 付近を調べてください。どういうわけかファイルデコレータが要素から削除されていると思われます。デコレータがないか、単にデコレータが不足している可能性がありますFile

それが役立つことを願っています。

于 2012-05-29T16:52:34.887 に答える