2013-05-09 15 views
1

我使用名爲「Events」的擴展生成器創建了一個擴展。還創建了一個前端插件。創建的模型具有屬性eventDateeventtitle。控制器的操作:Show, List, and New.Extension Builder前端插件顯示Extbase對象錯誤

我將此插件添加到頁面。但它似乎並沒有工作。

它給我看到一個錯誤:$events = $this->eventRepository->findAll();EventController

PHP的日誌顯示我下面的錯誤:Fatal error: Call to a member function findAll() on a non-object in ../typo3conf/ext/event/Classes/Controller/EventController.php on line 44

的appache日誌顯示我follwoing錯誤:

Thu May 09 19:19:26 2013] [error] [client ::1] PHP 30. TYPO3\\Event\\Controller\\EventController->listAction() /home/Public/Project/typo3/typo3_src-6.1.0/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php:277, referer: http://localhost/Project/typo3/typo3/mod.php?M=web_ViewpageView&id=74 

請問該如何解決這個問題?

回答

5

請檢查eventRepository是否被正確注入。檢查擴展生成器中模型的「域對象設置」下的「聚合根」選項,並檢查是否已創建文件yourext/Classes/Domain/Repository/EventRepository.php。清除後端緩存是必需的!

存儲庫需要由任一

TYPO3版< 6.0

/** 
* @var Tx_YourExt_Domain_Repository_EventRepository 
*/ 
protected $eventRepository; 

/** 
* injectEventRepository 
* 
* @param Tx_YourExt_Domain_Repository_EventRepository $eventRepository 
* @return void 
*/ 
public function injectEventRepository(Tx_YourExt_Domain_Repository_EventRepository $eventRepository) { 
    $this->eventRepository = $eventRepository; 
} 

或TYPO3版注入> = 6.0

/** 
* eventRepository 
* 
* @var \YourVendor\YourExtension\Domain\Repository\EventRepository 
* @inject 
*/ 
protected $eventRepository; 
+0

好吧,我忘了更新我的代碼。錯誤得到糾正。是的,你給的答案是解決方案。謝謝。 但是,myext存儲庫擴展了'\ TYPO3 \ CMS \ Extbase \ Persistence \ Repository'。所以在我的myext/domain/repository/mextrepository.php中,是否需要添加'findAll()'函數...我的'extbase/persistance/repository.php'具有'findAll'函數..不會在這裏自動繼承? – dora 2013-05-10 09:28:22

+0

有時候,在6.2 LTS安裝中只使用@inject的東西是行不通的。除了添加受保護的變量之外,還有更多。 – 2014-07-05 07:15:42

0

記得登錄登出爲好。 有時更改不會傳播,直到您登錄/註銷 或禁用/啓用該擴展。