0

在提交带有文件上传输入的表单时,我遇到了 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 调用提交的,并且会阻止文件上传作为安全功能。

4

2 回答 2

0

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

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

对于文件上传,它是强制性的。

于 2013-06-07T07:10:43.670 回答
0

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

   $form->getMessages();

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

于 2013-06-10T07:44:19.863 回答