2013-05-09 4 views
1

Я создал расширение с помощью Extension builder под названием «События». Также создан внешний интерфейс. Созданная модель имеет атрибуты eventDate и eventtitle. Контроллер имеет следующие действия: Show, List, and New.Расширение Builder Плагин Frontend, показывающий ошибку объекта 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. Требуется очистка кеша в backend!

Репозиторий нужно вводить либо

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() 'function ... у моего' extbase/persistance/repository.php' есть функция 'findAll' .. это не будет автоматически унаследовано здесь? – dora

+0

Иногда использование объектов @inject на установке 6.2 LTS не работает. Там должно быть больше, чем просто добавление этой защищенной переменной. –

0

запомнить, чтобы войти в выход из системы, а также. иногда изменения не будут распространяться до тех пор, пока вы не войдете в систему/выйдите из системы или не отключите/не активируете расширение.

Смежные вопросы