Сохраните user_id зарегистрированного пользователя при отправке формы в 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, Я попробовал несколько вещей, которые не сработали, вот самые многообещающие:

  • отдельный exchangeArray только для user_id. К сожалению, он генерирует только пустую запись в моей базе данных вдоль формы данных.
  • объединить $testing->exchangeArray($form->getData()); с данными user_id, очевидно, здесь тоже нет успеха.

Дело в том, что я вроде знаю, что мне нужно: простой вывод 18 от $user->getID(); мне не поможет, потому что мне нужно присвоить этот номер user_id столбец в базе данных вместе с данными, предоставленными пользователем с идентификатором user_id,

Я использую Zend Framework 2.3.3, ZF-Commons/ZfcBase 0.0.1 и ZF-Commons/ZfcUser 1.2.2

1 ответ

Решение

Вы можете объединить user_id с данными из вашей формы в одном массиве с array_merge:

$testing->exchangeArray(array_merge(
    $form->getData(),
    ['user_id' => $user->getID()]
));
Другие вопросы по тегам