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

Save the user_id of a logged in user when submitting a form in ZF2

我想保存用户 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->getID(); 的纯输出 18 对我没有帮助,因为我需要将这个数字分配给 user_id 数据库中的列以及用户提交的 id 为 user_id.

的数据

我正在使用 Zend Framework 2.3.3、ZF-Commons/ZfcBase 0.0.1 和 ZF-Commons/ZfcUser 1.2.2

您可以使用 array_merge 将 user_id 与表单中的数据合并到一个数组中:

$testing->exchangeArray(array_merge(
    $form->getData(),
    ['user_id' => $user->getID()]
));