Используя \ Serializable, сущности внутри моего объекта преобразуются в идентификаторы при сериализации. При десериализации объекты извлекаются из хранилища. Это прекрасно работает для «обычных» объектов домена, но не работает на отображаемых объектах (например, объектах, сопоставленных с fe_user)Мой объект хранится в обычном сеансе TYPO3.
class PutMeIntoSession implements \Serializable {
protected $project = null;
protected $myCustomFrontendUser = null;
public function getProject() {
return $this->project;
}
public function setProject(\Vendor\Ext\Domain\Model\Project $project = NULL) {
$this->project = $project;
}
public function getMyCustomFrontendUser() {
return $this->myCustomFrontendUser;
}
public function setMyCustomFrontendUser(\Vendor\Ext\Domain\Model\MyCustomFrontendUser $myCustomFrontendUser = NULL) {
$this->myCustomFrontendUser = $myCustomFrontendUser;
}
public function serialize() {
$serialized = serialize(array(
'project' => $this->project ? $this->project->getUid() : 0,
'myCustomFrontendUser' => $this->myCustomFrontendUser ? $this->myCustomFrontendUser->getUid() : 0
));
return $serialized;
}
public function unserialize($serialized) {
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$unserialized = unserialize($serialized);
// This works fine.
$this->project = $objectManager->get(\Vendor\Ext\Domain\Repository\ProjectRepository::class)->findByUid($unserialized['project']);
// This fails. Extbase tries to select from 'db.tx_ext_domain_model_mycustomfrontenduser' instead of 'db.fe_users'
$this->myCustomFrontendUser = $objectManager->get(\Vendor\Ext\Domain\Repository\ProjectRepository\MyCustomFrontendUser::class)->findByUid($unserialized['myCustomFrontendUser']);
}
}
Как обеспечить соблюдение конфигурации отображения (заданной typoscript) в этом случае? Или еще, есть ли другая возможность достичь того, чего я хочу?