2012-12-27 32 views
8

Tôi đang cố gắng sử dụng plugin extbase thông qua typoscript trên TYPO3 CMS 6.0. Tôi sử dụng đoạn mã sau, mà tôi tìm thấy lặp đi lặp lại trên tất cả các web:Làm cách nào để khởi động một plugin trên TYPO3 CMS 6.0 với extbase?

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

Tuy nhiên, điều này chỉ mang lại cho tôi những lỗi sau:

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

Dường như với tôi như thể tx_extbase_core_bootstrap->run không sử dụng không gian tên tuy nhiên, do đó, cố gắng tải một lớp có tên là Tx_VmfdsSermons_Controller_SermonController khi nó phải có tên là \TYPO3\VmfdsSermons\Controller\SermonController. Có cách nào để giái quyết vấn đề này không?

Trả lời

13

Bạn đang tìm kiếm tài sản vendorName. Vì vậy, trong trường hợp của bạn nên là:

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

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

Tôi cũng sử dụng không gian tên nhà cung cấp trong vòng ext_localconf.php:

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

Tôi tìm thấy câu trả lời bằng cách sử dụng trình gỡ lỗi. Tôi bắt đầu tại \TYPO3\CMS\Extbase\Mvc\Dispatcher::resolveController() và nhảy vào TYPO3\CMS\Extbase\Mvc\Request::getControllerObjectName(). Có một thành viên controllerVendorName, vì vậy tôi đã tìm kiếm trong Extbase cho setter của , chính xác chỉ cho setControllerVendorName, và có một trận đấu trong \TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder::build(), trong đó có một thành viên gọi là vendorName và chỉ trong phương thức trên \TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder::loadDefaultValues(), là câu trả lời!

+0

Cảm ơn, điều đó đã xảy ra. –

6

Gọi tx_extbase_core_bootstrap không còn được sử dụng vì nó là deprecated trong ver. 6.0 và sẽ bị xóa trong 7.0

Bạn có thể thử khác. Các nhà phát triển bây giờ sẽ xử lý tất cả mọi thứ với namespace ...

Bạn có thể sử dụng này:

# bootstrap aufrufen -> run from extbase 

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

Bạn nói đúng, tất nhiên, nhưng điều này không giải quyết được vấn đề của tôi. Tuy nhiên, việc đặt 'vendorName = TYPO3'. –