Extbase запрос не работает

Я хочу получить объект из репозитория моего расширения.

Я добавил следующий код в контроллер FachController

/**
* modulRepository
*
* @var \ReRe\Rere\Domain\Repository\ModulRepository
* @inject
*/
protected $modulRepository = NULL;

И я пытаюсь получить объект следующим образом:

$modulUID = $this->request->getArgument('modul');
$modul = $this->modulRepository->findByUid($modulUID);

но я получаю ошибку в этой строке:

$modul = $this->modulRepository->findByUid($modulUID);`

Ошибка:

Call to a member function findByUid() on a non-object

Почему я получаю эту ошибку?

В моем репозитории я добавил этот код:

public function findByUid($uid) {
  $query = $this->createQuery();
  $query->matching($query->equals('uid', $uid));
  $models = $query->execute();
  return $models;
}

person Felix    schedule 24.12.2014    source источник
comment
Пожалуйста, постарайтесь улучшить читаемость ваших вопросов, используя подсветку кода и т. д. Это облегчает ответ. Вы можете редактировать вопросы самостоятельно, если хотите исправить ошибки.   -  person lorenz    schedule 24.12.2014


Ответы (1)


Вам не нужно иметь метод findByUid в вашем репозитории, потому что этот метод уже определен в базовом классе репозитория.

Проблема, скорее всего, в том, что вы не очистили системные кеши (в контексте разработки для этого есть кнопка в бэкенде и кнопка для этого в инструменте установки) после добавления внедрения зависимостей для $modulRepository. Это необходимо, потому что внедрение зависимостей кешируется, и этот кеш не сбрасывается при очистке общего кеша.

person lorenz    schedule 24.12.2014
comment
Хорошо, я удалил свою собственную функцию findByUid и очистил кеши, но ничего не изменилось? - person Felix; 24.12.2014
comment
решено! Я удалил расширение, очистил все кеши и переустановил расширение, и тогда оно работает! Спасибо! - person Felix; 24.12.2014