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

问题描述 投票:0回答:1

我想保存用户

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
    仅适用于 user_id。不幸的是,它 仅沿着数据表单在我的数据库中生成一个空条目。
  • $testing->exchangeArray($form->getData());
    与 user_id数据,显然这里也没有成功。

问题是,我有点知道我需要什么:

18
的纯输出
$user->getID();
对我没有帮助,因为我需要将此数字与提交的数据一起分配给数据库中的
user_id
列id 为
user_id
的用户。

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

php zend-framework zend-framework2 zend-form zfcuser
1个回答
1
投票

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

$testing->exchangeArray(array_merge(
    $form->getData(),
    ['user_id' => $user->getID()]
));
© www.soinside.com 2019 - 2024. All rights reserved.