我希望将用户user_id
保存在他通过表单提交的数据中。这是在我的控制器中:
控制器:
$request = $this->getRequest();
if ($request->isPost()) {
$testing = new Testing();
$form->setInputFilter($testing->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
$this->zfcUserAuthentication()->hasIdentity(); // user logged in?
$user = $this->zfcUserAuthentication()->getIdentity(); //get identity
$user_id = $user->getID(); //gets the user-id, output: number, eg. 18
$testing->exchangeArray($form->getData());
$this->getTestingTable()->saveTesting($testing);
// Redirect to iaps test
return $this->redirect()->toUrl('/testing/iaps4');
}
}
return array('form' => $form);
}
如果我print_r($user_id)
,输出将简单明了18
。
我尝试了几件不起作用的东西,这里是最有希望的东西:
exchangeArray
。不幸的是,它
只在数据表中沿数据表单生成一个空条目。$testing->exchangeArray($form->getData());
与。{
user_id数据,显然也没有成功。问题是,我知道我需要什么:来自18
的简单输出$user->getID();
不会帮助我,因为我需要将此数字设为{{1}数据库中的列,用户提交的数据为user_id
。
我使用的是Zend Framework 2.3.3,ZF-Commons / ZfcBase 0.0.1和ZF-Commons / ZfcUser 1.2.2
答案 0 :(得分:1)
您可以使用array_merge:
将user_id与表单中的数据合并到一个数组中$testing->exchangeArray(array_merge(
$form->getData(),
['user_id' => $user->getID()]
));