在提交带有文件上传输入的表单时,我遇到了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调用提交的,并且会阻止文件上传作为安全功能。
答案 0 :(得分:0)
尝试像这样设置表单类型:
$this->setAttrib('enctype', 'multipart/form-data');
用于文件上传,这是强制性的。
答案 1 :(得分:0)
请检查您的错误消息。你可以这样收到它们:
$form->getMessages();
也许该文件超过了php.ini中定义的max_upload_size。