在ZF2中提交表单时保存已登录用户的user_id

时间:2015-01-09 09:15:55

标签: zend-framework zend-framework2 zend-form zend-db zfcuser

我希望将用户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。 我尝试了几件不起作用的东西,这里是最有希望的东西:

  • 仅用于user_id的单独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

1 个答案:

答案 0 :(得分:1)

您可以使用array_merge:

将user_id与表单中的数据合并到一个数组中
$testing->exchangeArray(array_merge(
    $form->getData(),
    ['user_id' => $user->getID()]
));