Extbase - Serializable - отображение таблицы не учитывается при десериализации из сеанса TYPO3 - PullRequest
0 голосов
/ 09 ноября 2019

Используя \ 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) в этом случае? Или еще, есть ли другая возможность достичь того, чего я хочу?

...