在保存期间,我发现了一个错误:
values()需要一个值数组或Zend \ Db \ Sql \ Select实例
我认为错误来自:
$this->tableGateway->insert($procedure);
我不明白出了什么问题。
这是我的过程功能:
public function processAction()
{
if (!$this->request->isPost()){
return $this->redirect()->toRoute(null, array('controller'=>'test', 'action'=>'index'));
}
$post = $this->request->getPost();
$form = new TestForm();
$inputFilter = new \Postepowania\Form\TestFilter();
$form->setInputFilter($inputFilter);
$form->setData($post);
if (!$form->isValid()){
$model = new ViewModel(
array(
'error' => true,
'form' =>$form,
)
);
$model->setTemplate('postepowania/test/index');
return $model;
}
$this->createTest($form->getData());
//return $this->redirect()->toRoute(null,array('controller' => 'test','action' => 'confirm',));
}
和createTest函数:
public function createTest(array $data){
$testTable = $this->getServiceLocator()->get('TestTable');
$test = new Test();
$test->exchangeArray($data);
$testTable->save($test);
return true;
}
保存功能非常简单:
public function save(Test $procedure)
{
$id = (int)$procedure->id;
if($id == 0)
{
$this->tableGateway->insert($procedure);
}
}
答案 0 :(得分:1)
$this->tableGateway->insert()
通过查看source,insert()
需要将数组传递给它,而不是对象。我建议在传入之前将对象转换为数组。