首页 > 解决方案 > TYPO3 旧扩展更新使用“退出”:好还是不好?

问题描述

几年前,我开发了一个扩展作为后端模块。它可以在 TYPO3 7 LTS 上运行。最近我更新了它,想让它在 TYPO3 8 LTS 上运行。

它不是基于Extbase,主类路径是mod1/index.php。

在这个 index.php 中有主类 tx_xxxxx_module1。在类 tx_xxxxxx_module1 中有多个函数,可以生成想要的内容。在 index.php 的末尾调用了一个函数来打印内容(到 iframe 中): $SOBE->printContent();

//index.php
<?php
global $MCONF;
require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('xxxxx').'mod1/conf.php';

class  tx_xxxxx_module1 extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
    ......

    function main()    {
        ......
    }

    ......

    function printContent()    {
        ......
    }
}

......

$SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tx_xxxxx_module1');
$SOBE->main();
$SOBE->printContent();

?>

这里 $SOBE 是类 tx_xxxxxx_module1 的一个实例(单例);在函数 printContent() 中,除了一个回显命令之外什么都没有:

function printContent()    
{
    echo $this->content;
}

这适用于 TYPO3 7。但在 TYPO3 8 中,我在 iframe 中什么也没看到。所以我在函数 printContent() 中添加了退出命令。问题解决了!内容出现在 iframe 中!

function printContent()    
{
    echo $this->content;
    exit;
}

我的问题:这种解决方法(使用exit)好还是不好?还有其他更好或推荐的方法吗?

标签: debuggingtypo3typo3-8.x

解决方案


这听起来不错,但如果你需要的话,我会考虑整体重构代码,也可以切换到流体进行模板等等。但是,如果您不需要它,则无需切换到 extbase。


推荐阅读