如何使用 extbase 在 TYPO3 CMS 6.0 上引导插件?

Posted

技术标签:

【中文标题】如何使用 extbase 在 TYPO3 CMS 6.0 上引导插件?【英文标题】:How do I bootstrap a plugin on TYPO3 CMS 6.0 with extbase? 【发布时间】:2012-12-13 05:49:37 【问题描述】:

我正在尝试通过打字稿在 TYPO3 CMS 6.0 上使用 extbase 插件。我使用了以下代码,我发现它在整个网络上都重复了:

10 = USER
10  
    userFunc = tx_extbase_core_bootstrap->run
    pluginName = Sermons
    extensionName = VmfdsSermons
    switchableControllerActions 
        Sermon 
            1 = byLatestSeries
            2 = list
            3 = show
    

但是,这只会给我以下错误:

#1289386765: Could not analyse class:Tx_VmfdsSermons_Controller_SermonController maybe not loaded or no autoloader?

在我看来,tx_extbase_core_bootstrap->run 似乎还没有使用命名空间,因此尝试加载一个名为 Tx_VmfdsSermons_Controller_SermonController 的类,而它本应调用 \TYPO3\VmfdsSermons\Controller\SermonController。有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

您正在搜索属性vendorName。所以在你的情况下应该是:

10 = USER
10  
    userFunc      = TYPO3\CMS\Extbase\Core\Bootstrap->run

    pluginName    = Sermons
    extensionName = VmfdsSermons
    vendorName    = TYPO3
    [...]

我还使用了ext_localconf.php 中的供应商命名空间:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    '<Vendor>.' . $_EXTKEY, 
    [...]

我通过调试器找到了答案。我从\TYPO3\CMS\Extbase\Mvc\Dispatcher::resolveController() 开始,然后跳到TYPO3\CMS\Extbase\Mvc\Request::getControllerObjectName()。有一个成员controllerVendorName,所以我在Extbase 中搜索\TYPO3\CMS\Extbase\Mvc\Request::setControllerVendorName() 的setter,正好是setControllerVendorName,并在\TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder::build() 中找到了一个匹配项,其中有一个名为vendorName 的成员,并且就在以上方法\TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder::loadDefaultValues(),就是答案!

【讨论】:

【参考方案2】:

不应再使用调用tx_extbase_core_bootstrap,因为它在版本中是deprecated。 6.0 并将在 7.0 中删除

你可以尝试不同的。开发人员现在应该使用命名空间来处理所有事情......

你可以用这个:

# bootstrap aufrufen -> run from extbase

userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run

【讨论】:

你是对的,当然,但这并不能解决我的问题。但是,设置 vendorName = TYPO3 确实如此。

以上是关于如何使用 extbase 在 TYPO3 CMS 6.0 上引导插件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在typo3 V10的extbase控制器中重定向到404页面

TYPO3 调度程序任务 - 奇怪的行为

TYPO3 Extbase - 重定向到 pid

TYPO3 Extbase - 在单个视图中更改浏览器页面标题

TYPO3 前端用户存储库

php TYPO3 Extbase - 按照逗号逗号列表的顺序获取产品