Как загрузить плагин на TYPO3 CMS 6.0 с помощью extbase?

Я пытаюсь использовать плагин extbase через typoscript на TYPO3 CMS 6.0. Я использовал следующий код, который повторялся по всему Интернету:

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. Это можно обойти?


person Christoph Fischer    schedule 27.12.2012    source источник


Ответы (2)


Вы ищете недвижимость 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() есть ответ!

person witrin    schedule 08.01.2013

Вызов tx_extbase_core_bootstrap больше не следует использовать, так как он устарел в вер. 6.0 и будет удален в 7.0

Вы можете попробовать разные. Теперь разработчики должны обрабатывать все с помощью пространств имен...

Вы можете использовать это:

# bootstrap aufrufen -> run from extbase

userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
person til.tack    schedule 30.12.2012
comment
Вы правы, конечно, но это не решает моей проблемы. Однако установка vendorName = TYPO3 была выполнена. - person Christoph Fischer; 17.04.2013