Extbase-将域对象存储到TYPO3会话中

通常可以将任何域对象放入会话($ GLOBALS ['TSFE']-> fe_user)中,因为它们会自动正确地序列化和反序列化。但是在某些情况下,此操作将失败(我想是由于循环引用或序列化数据超出了数据库blob字段的限制)。

我找到了一种更好的方法,在序列化时将域对象转换为整数“ ids”,并在反序列化时从存储库中获取真实的域对象:

class PutMeIntoSession implements \Serializable {

    protected $project = null;

    public function getProject() {
        return $this->project;
    }

    public function setProject(\Vendor\Ext\Domain\Model\Project $project = NULL) {
        $this->project = $project;
    }

    public function serialize() {
        $serialized = serialize(array(
            'project' =>  $this->project ? $this->project->getUid() : 0
        ));
        return $serialized;
    }

    public function unserialize($serialized) {
        $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
        $unserialized = unserialize($serialized);
        $this->project = $objectManager->get(ProjectRepository::class)->findByUid($unserialized['project']);
    }

}

这似乎很好。但是我不知道是否有更聪明的方法来实现这一目标,或者我的方法是否可能存在问题?

guangguang198 回答:Extbase-将域对象存储到TYPO3会话中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3138244.html

大家都在问