如何使用 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页面