TYPO3 - Call another repository

筅森魡賤 提交于 2019-11-30 15:54:34

You can inject every repository of every installed extbase extension. Just add the dependency injection code to your controller. Depending on your TYPO3 version ist either:

TYPO3 >= 6.0:

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

Note that the @inject Annotation does not perform very well in comparison to a dedicated inject method. So if you need to tweek the performance of your application and have many injections in yout controller you should consider switching to inject methods:

/**
 * @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;
}

In any case you can use $this->someRepository with all its methods in the controller you injected the repository into.

Edit: fixed typo.

Edit: After adding a Dependency Injection, you have to clear the cache!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!