Система, которую я использую, настроена следующим образом:
Typo3 8.7.27, MariaDB 10.3.16, PHP 7.0.33
Я расширил FrontendUser
с помощьюдополнительные некоторые дополнительные поля.Однако, если я позвоню action create
, пользователь будет создан / сохранен, но поля: confirmation_token
& reg_source
не будут сохранены.Дело в том, что если я очищаю кеш, он работает некоторое время, но через несколько минут / часов проблема снова появляется.
Действие 'create' выглядит следующим образом:
/**
* action create
*
* @param \CODEMASCHINE\CmCoursefinder\Domain\Model\FrontendUser $user
* @return void
*/
public function createAction(\CODEMASCHINE\CmCoursefinder\Domain\Model\FrontendUser $user) {
$feGroup = $this->userGroupRepository->findByUid(1);
$random_token = substr(md5(uniqid(rand(), true)),0,8); //the token is generated properly
$user->setPid($this->settings['usersStoragePid']);
$user->addUsergroup($feGroup);
$user->setEmail($user->getUsername());
if (TYPO3_MODE === 'BE'){
$this->userRepository->add($user);
$user->setRegSource(3);
$this->redirect('list');
} else {
$user->setRegSource(2);
$user->setDisable(1);
$user->setTxCmcoursefinderConfirmationToken($random_token); //the token is there. it is not empty
$this->userRepository->add($user);
$this->persistenceManager->persistAll();
$pageUid = 418;
$uri = $this->uriBuilder->reset()
->setCreateAbsoluteUri(true)
->uriFor('confirm', array('user' => $user->getUid(), 'confirmationToken' => $user->getTxCmcoursefinderConfirmationToken()),'User');
$mailSubject = "a Email-Subject";
$mailBody = "To Confirm your account please go to $uri "
$this->redirect('complete');
}
}
Поля confirmation_token
& reg_source
в 'ext_tables.php':
$newColumns = Array (
'tx_cmcoursefinder_confirmation_token' => array(
'exclude' => 0,
'label' => 'LLL:EXT:cm_coursefinder/Resources/Private/Language/locallang_db.xlf:tx_cmcoursefinder_domain_model_frontenduser.confirmationToken',
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'trim'
),
),
'reg_source' => array(
'exclude' => 0,
'label' => 'LLL:EXT:cm_coursefinder/Resources/Private/Language/locallang_db.xlf:tx_cmcoursefinder_domain_model_frontenduser.regSource',
'config' => array(
'type' => 'input',
'size' => 1,
'eval' => 'trim'
),
)
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_users', $newColumns, 1);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'tx_cmcoursefinder_confirmation_token', '', 'after:email');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'reg_source', '', 'after:email');
Конфигурация / Typoscript / setup.txt
config.tx_extbase{
persistence{
classes{
CODEMASCHINE\CmCoursefinder\Domain\Model\FrontendUser {
mapping {
tableName = fe_users
recordType = 0
}
}
}
}
}
Есть идеи?если вам нужна дополнительная информация, пожалуйста, не стесняйтесь комментировать.