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

时间:2012-12-27 21:20:51

标签: typo3 typoscript extbase

我正在尝试通过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的类。有办法解决这个问题吗?

2 个答案:

答案 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