ZF2调用未定义的方法Zend \ File \ Transfer \ Adapter \ Http :: setInputFilter()

时间:2017-04-18 07:13:35

标签: forms zend-framework2 runtime-error file-transfer

创建了一个表单并添加了一个字段来将图像上传到服务器上的文件夹我已经通过打印提交表单后检查了所有值正常工作,它给出了上面提到的错误,而不是将数据保存到DB:

我的控制器:

public function vouchersAction()

 {
      $vouchers = new VouchersForm();
      $vouchers->get('submit')->setValue('Vouchers');

      $request = $this->getRequest();

     if ($request->isPost()) {
         //echo '<pre>'; print_r($request);
            //exit();
         $vouchers = new Vouchers();
         $vouchers = new \Zend\File\Transfer\Adapter\Http();  
         $vouchers->setDestination('C:\xampp\htdocs\reisesparer\public\images\coupons');
         $vouchers->setInputFilter($vouchers->getInputFilter());
         $vouchers->setData($request->getPost());
         if ($vouchers->receive()) { 
            echo "The file has been uploaded!";
             }
         if ($vouchers->isValid()) {
             $vouchers->exchangeArray($vouchers->getData());
             $this->getVouchersTable()->saveVouchers($vouchers);


             return $this->redirect()->toRoute('vouchers');
         }
     }
     return array('vouchers' => $vouchers);
 }

错误: Fatal error: Call to undefined method Zend\File\Transfer\Adapter\Http::setInputFilter()

2 个答案:

答案 0 :(得分:0)

你的行动现在没有任何意义。
1.您将VouchersForm()课程初始化为$vouchers 2.如果请求是POST,那么您执行:

 $vouchers = new Vouchers();
 $vouchers = new \Zend\File\Transfer\Adapter\Http();

您使用新班级#1覆盖点VouchersFormVouchers)的班级。 您没有对其执行任何操作,然后使用Vouchers覆盖Zend\File\Transfer\Adapter\Http()类,并尝试从类VouchersForm调用方法(#1):

 $vouchers->setInputFilter($vouchers->getInputFilter());
 $vouchers->setData($request->getPost());

Zend\File\Transfer\Adapter\Http()课程中不存在。

您应该在第$vouchers个区块if)内重命名变量if ($request->isPost())

答案 1 :(得分:0)

使用“addValidator”方法代替$vouchers->setInputFilter($vouchers->getInputFilter());

例如:

$vouchers->addValidator('MimeType', false, 'image/png');