如何以zend形式添加文件元素?

时间:2011-10-08 14:37:25

标签: php zend-framework file-upload zend-form

我正在创建这样的表单:

UploadFiale.php

<?php 

class Form_UploadFile extends Zend_Form {

    public function __construct( $options = null ) {

        parent::__construct( $options );    
        $this->setMethod('post');
        $elements = array();

        // photo
        $element = new Zend_Form_Element_File('photo');
        $element->setLabel('Photo');
        $element->addValidator('Count', false, 1);
        $element->addValidator('Size', false, 102400);
        $element->addValidator('Extension', false, 'jpg,png,gif');
        $elements[] = $element;

        // submit button      
        $element = $this->CreateElement('submit', 'submit');
        $element->setLabel('Save');
        $elements[] = $element;

        $this->addElements( $elements );
        $this->setElementDecorators( array( 'ViewHelper' ) );          
        $this->setDecorators( array( array( 'ViewScript', array( 'viewScript' => 'uploadfile-form.phtml' ) ) ) );

    } // end construct       
} // end class
?>

uploadfile-form.phtml

<form action=<?= $this->element->getAction() ?> method=<?= $this->element->getMethod() ?> id='AddNotificationForm' enctype='multipart/form-data' class='AjaxForm'>    
<table border='0'>   
    <tr>
        <td><label><?= $this->element->photo->getLabel() ?></label></td>
        <td><?= $this->element->photo; ?></td>
    </tr>
    <tr>
        <td></td>
        <td><?= $this->element->submit; ?></td>
    </tr>       
</table>    
</form>

当我初始化表单类并在视图中呈现它时,我收到以下错误:

  

警告:找不到文件装饰器...无法呈现文件元素   第2041行的/project_folder/library/Zend/Form/Element.php

相同的结构正在与其他表单元素一起使用,但不能与 file 元素一起使用。有人能告诉我这里有什么问题吗?

由于

1 个答案:

答案 0 :(得分:2)

Zend_Form_Element_File是一种特殊的方式,如果没有“文件”装饰器它无法正常添加或删除

$this->setElementDecorators( array( 'ViewHelper' ) );