Typo3 BackendPreview获取cObj抛出:在null

时间:2017-12-15 06:58:46

标签: typo3 typo3-8.x

在我的BackendPreview中找到typo3 8.7中的自定义内容元素我试图在我自己的服务类中使用以下代码获取内容对象:

            $conf = array(
            'tables' => 'tt_content',
            'source' => $uid,
            'dontCheckPid' => 1
        );

        $this->objectManager = GeneralUtility::makeInstance(ObjectManager::class);
        $result = $this->objectManager->get(RecordsContentObject::class)->render($conf);

在frontendContext中执行此操作将按预期返回cObj但在BE上下文中,typo3抛出异常:“在null上调用成员函数enableFields()”。

我尝试手动初始化配置管理但没有效果。

有人有想法吗?

1 个答案:

答案 0 :(得分:0)

问题,ContentObjectRenderer(负责你的TypoScript渲染)需要TSFE(TypoScriptFrontendController),因为你不是在FE上下文而是BE上下文,所以它不会被初始化。

理论上,你可以伪造它,但当然它会降低性能,我不会推荐它。

如果你想要一个privew,那么使用这个approche:

https://docs.typo3.org/typo3cms/extensions/fluid_styled_content/7.6/AddingYourOwnContentElements/Index.html