【问题标题】:Are pibase extensions still working in TYPO3 8?pibase 扩展是否仍在 TYPO3 8 中工作?
【发布时间】:2018-06-08 01:24:18
【问题描述】:

我必须将 TYPO3 6.2 网站迁移到 8.7。有些网站使用自定义的 pibase 扩展,我需要用 Extbase 重新开发它们吗?

【问题讨论】:

  • 你不需要,它们应该仍然可以工作。类 tslib_pibase 自 TYPO3 v6 以来已更改为 \TYPO3\CMS\Frontend\Plugin\AbstractPlugin 并且仍然可用
  • 存在扩展migration_core,它可以帮助您自动完成大多数类替换。

标签: typo3 typo3-6.2.x typo3-8.x


【解决方案1】:

资源

我发现以下资源有助于移植:

更新到 6.2+

更新到 7+

更新到 8+

更新到 9+

  • 官方"Changelog" for 9
  • “TYPO3 Explained”中的 Migrating from TYPO3_DB 用于将旧的数据库函数转换为 QueryBuilder。您可以转换为 QueryBuilder 或 Extbase Query。 ($GLOBALS['TYPO3_DB'] 自 9 起不再可用,除非您使用扩展typo3db_legacy!)

还有:

一般

您需要进行的更改可能微不足道。在其他情况下,意义重大。

考虑到所有因素,我通常建议使用 Extbase 或 Doctrine DBAL (QueryBuilder) 和 Fluid、命名空间、TYPO3 9 API(如果可能,甚至可能是 TYPO3 10)重写。从长远来看,您的扩展(可能)会更好地维护。

提示

  • 如果您迁移到 TYPO3 9 或更高版本,请使用extension scanner 检测最有可能导致问题的代码。它对于清理遗留代码非常有帮助。 (您还可以在 TYPO3 9 安装中扫描已卸载的扩展程序)。
  • 另外,rector 的使用通常用于在扩展中自动更改 PHP。 TYPO3 的规则可通过sabbelasichon/typo3-rector 获得

变化

您可能需要更改以下一项或多项(并且这不是一个完整的列表!):

用新类替换旧类

在大多数情况下,我需要替换以下子集:

  • Tx_Extbase_Utility_Extension:\TYPO3\CMS\Extbase\Utility\ExtensionUtility
  • t3lib_extMgm: \TYPO3\CMS\Core\Utility\ExtensionManagementUtility
  • t3lib_div: \TYPO3\CMS\Core\Utility\GeneralUtility
  • tslib_cObj: \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
  • t3lib_utility_VersionNumber: \TYPO3\CMS\Core\Utility\VersionNumberUtility
  • t3lib_BEfunc: \TYPO3\CMS\Backend\Utility\BackendUtility
  • t3lib_TCEmain : \TYPO3\CMS\Core\DataHandling\DataHandler
  • t3lib_parsehtml_proc : \TYPO3\CMS\Core\Html\RteHtmlParser

完整列表请参见ClassAliasMap.php

TCA

请参阅“Andreas Fernandez: Cleaning the hood”,了解有关清理 TCA 的非常好的描述,并附有真实示例。

页面渲染器

  • 将 $this->getPageRenderer 替换为 \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class);

page.includeJSlibs

“page.includeJSlibs 被标记为弃用,将在 TYPO3 CMS 8 中删除。请改用 page.includeJSLibs(带有大写 L)”

【讨论】:

    【解决方案2】:

    之前所有的答案都是正确的,但是 TYPO3 核心团队成员的一些话:没有计划在核心中放弃对“pibase”的支持。使用该 API 绝对没问题,即使它对开发人员没有太多帮助。


    但我建议至少使用独立的流体,以便能够创建漂亮的模板,而无需所有这些 ### 东西。

    【讨论】:

    • 谢谢,我会听从你的建议的。
    • 嗨@Georg Ringer,感谢您的明确陈述。由于您的声明现在已有 1.5 年的历史,我想问一下,基于 pi 的插件还没有被弃用吗? - 你知道为什么这里没有人推荐 pibase 扩展的兼容性插件吗?
    • API 仍未被弃用。不推荐使用兼容性插件,因为它只是将技术债务转移到未来,稍后会打击你。这些扩展也没有维护
    • @GeorgRinger 这可能是一个愚蠢的问题,但是:当我使用具有此 ### 内容的 pibase 扩展时,我可以将它与 Fluid 混合并使用 ### 标记作为输出吗?
    • 您当然可以使用流畅的独立视图并使用该结果
    【解决方案3】:

    您无需重新开发这些扩展,但您可能需要更改对核心函数的调用。
    在 6.2 中,您仍然可以使用旧的类名,例如 t3lib
    这些类名仅适用于兼容层(有很多延迟)。

    未来您需要使用命名空间(以及正确的新类)。您还应该为自己的类使用命名空间。

    根据您使用的函数,您可能需要用较新的函数替换一些调用,因为同时有些函数已被弃用。

    【讨论】:

      【解决方案4】:

      您无需重新开发这些扩展。

      只需要更改一些 TYPO3 核心功能,例如 t3lib_div t3lib_BEfunc t3lib_parsehtml t3lib_extMgm 等等..

      请在此处查看完整示例:See more details

      【讨论】:

        猜你喜欢
        • 2014-07-30
        • 1970-01-01
        • 1970-01-01
        • 2018-07-28
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2014-03-31
        • 2014-01-25
        相关资源
        最近更新 更多