我正在尝试通过TYPO3 CMS 6.0上的typoscript使用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
的类。有办法解决这个问题吗?
答案 0 :(得分:13)
您正在搜索属性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()
的设置器,恰好只针对setControllerVendorName
,并在\TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder::build()
中找到了一个匹配的成员vendorName
,只是在\TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder::loadDefaultValues()
上面的方法中,就是答案!
答案 1 :(得分:7)
不应再使用调用tx_extbase_core_bootstrap
,因为版本中deprecated。 6.0并将在7.0中删除
你可以尝试不同的。开发人员现在应该使用命名空间处理所有内容......
您可以使用:
# bootstrap aufrufen -> run from extbase
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run