2013-05-09 63 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

记得登录登出为好。 有时更改不会传播,直到您登录/注销 或禁用/启用该扩展。