Zend 1.12表格w文件上传无效

时间:2013-06-07 05:20:04

标签: forms zend-framework file-upload

在提交带有文件上传输入的表单时,我遇到了Zend 1.12.3的障碍。一切看起来都很好,但由于某种原因,表格没有验证。但是,在运行getMessages()以检索错误时,列表将显示为空白。有什么见解吗?谢谢!

这是我的控制器:

public function makeOfferAction()
{
    $form   =   new Application_Form_Lawyer_MakeOffer();
        if ($this->req->isPost()) 
        {
            if ($form->isValid($this->req->getPost()))
            {
                ....
            }
        }
    }      

    $this->view->makeofferForm  =   $form;
}

这是我的表格:

class Application_Form_Index_MakeOffer extends Zend_Form
{
public function init()
{
     $this->setMethod('post') 
            ->setAttrib('id','form-make-offer');

    $file    =   new My_File();
    $this->addElement('file', 'upload', array(
        'label'         => 'Attach Document',
        'ignore'        => true,
        'destination'   => $file->getDestinationPath(),
    ));

    $this->addElement('submit', 'submit', array(
        'ignore'   => true,
        'label'    => 'Make Offer',
        'class'     => 'button large right'
    ));
}
}

这是我的观点:

<?= $this->makeofferForm ?>

还尝试手动写出具有相同错误的表单:

<form id="form-offer" enctype="multipart/form-data" method="post" action="<?= $this->url() ?>">
    <?= $this->makeofferForm->upload ?>
    <?= $this->makeofferForm->submit ?>
</form>

更新

为了跟进这个问题,问题不在于形式;虽然表单编码在处理文件上传时很重要。问题是表单是通过AJAX调用提交的,并且会阻止文件上传作为安全功能。

2 个答案:

答案 0 :(得分:0)

尝试像这样设置表单类型:

$this->setAttrib('enctype', 'multipart/form-data');

用于文件上传,这是强制性的。

答案 1 :(得分:0)

请检查您的错误消息。你可以这样收到它们:

   $form->getMessages();

也许该文件超过了php.ini中定义的max_upload_size。