TYPO3 – вызов другого репозитория

Можно ли вызвать функцию в разных контроллерах? Мне нужно вызвать FindByCategoryGrouped($catId) в designRepository.php и getCategories($catId) из категорииRepository.php

 public function listAction() { $this->settings['flexform']['showCategory'] ? $catId = $this->settings['flexform']['showCategory']:$catId = $this->settings['listView']['showCategory']; // print $catId; if (!$catId || $this->settings['flexform']['showCategory'] == '-1') { $designs = $this->designRepository->findAll(); } else { // $designs = $this->designRepository->findByCategory($catId); $designs = $this->designRepository->findByCategoryGrouped($catId); // THIS $categories = $this->categoryRepository->getCategories($catId); // THIS } // indhold forsvinder hvis næste linje slettes $this->view->assign('designs', $designs, "L", $GLOBALS['TSFE']->sys_language_uid); $this->view->assign('catId', $catId); $this->view->assign('categories', $categories); } 

Solutions Collecting From Web of "TYPO3 – вызов другого репозитория"

Вы можете добавить каждый репозиторий для каждого установленного расширения extbase. Просто добавьте код инъекции зависимостей в контроллер. В зависимости от вашей версии TYPO3 ist:

TYPO3> = 6,0:

 /** * @var \Vendor\Extension\Domain\Repository\SomeRepository * @inject */ protected $someRepository; 

Обратите внимание, что @inject Annotation не работает очень хорошо по сравнению с выделенным методом инъекции. Поэтому, если вам нужно подкрутить производительность вашего приложения и иметь много инъекций в контроллере yout, вам следует рассмотреть возможность переключения на методы ввода:

 /** * @var \Vendor\Extension\Domain\Repository\SomeRepository */ protected $someRepository; /** * @param \Vendor\Extension\Domain\Repository\SomeRepository */ public function injectSomeRepository(\Vendor\Extension\Domain\Repository\SomeRepository $someRepository) { $this->someRepository = $someRepository; } 

TYPO3 = 4,7:

 /** * @var Tx_MyExtension_Domain_Repository_SomeRepository * @inject */ protected $someRepository; 

TYPO3 <4.7

 /** * @var Tx_MyExtension_Domain_Repository_SomeRepository */ protected $someRepository; /** * Inject SomeRepository * @param Tx_MyExtension_Domain_Repository_SomeRepository $someRepository * @return void */ public function injectSomeRepository(Tx_MyExtension_Domain_Repository_SomeRepository $someRepository) { $this->someRepository = $someRepository; } 

В любом случае вы можете использовать $this->someRepository со всеми его методами в контроллере, в который вы вводили репозиторий.

Изменить: исправлена ​​опечатка.

Изменить: после добавления инъекции зависимостей вам нужно очистить кеш!