创建了一个表单并添加了一个字段来将图像上传到服务器上的文件夹我已经通过打印提交表单后检查了所有值正常工作,它给出了上面提到的错误,而不是将数据保存到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()
答案 0 :(得分:0)
你的行动现在没有任何意义。
1.您将VouchersForm()
课程初始化为$vouchers
2.如果请求是POST
,那么您执行:
$vouchers = new Vouchers();
$vouchers = new \Zend\File\Transfer\Adapter\Http();
您使用新班级#1
覆盖点VouchersForm
(Vouchers
)的班级。
您没有对其执行任何操作,然后使用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');