Я использую TYPO3 7.6.10, и я строю свое первое расширение.
Я хочу добавить свойство к моему объекту в функции createAction моего контроллера.
Но изменения не сохраняются.
Вот мой код:
/**
* action create
*
* @param \Typo3\LpSurvey\Domain\Model\Sigil $newSigil
* @param array $answers
* @internal param Survey $newSurvey
*/
public function createAction(Sigil $newSigil, Array $answers)
{
$newSurvey = $this->objectManager->get('Typo3\LpSurvey\Domain\Model\Survey');
$this->userID = $GLOBALS['TSFE']->fe_user->user['uid'];
//this modifications are saved
foreach ($answers as $key => $answer) {
$newSurveyItem = $this->objectManager->get('Typo3\LpSurvey\Domain\Model\SurveyItem');
$newSurveyItem->setQuestionId($key);
$newSurveyItem->setValue($answer);
$newSurvey->addAnswer($newSurveyItem);
}//BUT this modification is not saved
$newSigil->setUserID($this->userID);
$newSigil->setSurvey($newSurvey);
$this->sigilRepository->add($newSigil);
$this->redirect('list');
}
Если я отлаживаю свой объект $newSigil
ИД пользователя установлен, но после добавления в хранилище будет сохранено значение по умолчанию.
Я не понимаю почему.
Я также пытаюсь сохранить это вручную, используя следующий код, но без решения:
/**
* @var \typo3\CMS\Extbase\Persistence\Generic\PersistenceManager
* @inject
*/
protected $persistenceManager;
public function createAction(Sigil $newSigil, Array $answers)
{
$newSurvey = $this->objectManager->get('Typo3\LpSurvey\Domain\Model\Survey');
$this->userID = $GLOBALS['TSFE']->fe_user->user['uid'];foreach ($answers as $key => $answer) {
$newSurveyItem = $this->objectManager->get('Typo3\LpSurvey\Domain\Model\SurveyItem');
$newSurveyItem->setQuestionId($key);
$newSurveyItem->setValue($answer);
$newSurvey->addAnswer($newSurveyItem);
}$newSigil->setUserID($this->userID);
$newSigil->setSurvey($newSurvey);
$this->persistenceManager->persistAll();
$this->sigilRepository->add($newSigil);
$this->redirect('list');
}
Надеюсь вопрос понятен
С наилучшими пожеланиями Феликс
Может быть, UserID неверно назван? Если ваша база данных называется user_id
Ваша собственность для домена должна userId
, Только если ваше поле базы данных называется user_i_d
должно userID
,
Других решений пока нет …