在另一个扩展中调用 extbase 存储库
Invoke extbase repository in another extension
我正在使用 2 个 extbase 扩展产品和应用程序。在产品扩展中,我为产品创建了 TCA,在产品扩展中它的 categories.And 一切都按预期工作。
我想在应用程序扩展中使用产品存储库。我使用了下面的代码并且它工作正常,仅适用于相应的页面。我的要求是我想使用相同的存储库(产品存储库)而不考虑页面 ID。
/**
* productsRepository
*
* @var \VENDOR\Products\Domain\Repository\ProductsRepository
* @inject
*/
protected ProductsRepository = NULL;
我可以使用下面的代码,但 AFIK 它只适用于应用程序扩展
$query->getQuerySettings()->setRespectStoragePage(FALSE);
谁能帮我找到解决办法?
PS:我还没有为应用程序扩展添加任何模型或存储库
在您的产品 ProductsRepository
中,您可以覆盖 initializeObject()
方法:
public function initializeObject() {
/** @var $querySettings \TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface */
$querySettings = $this->objectManager->get('TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface');
$querySettings->setRespectStoragePage(FALSE);
$this->setDefaultQuerySettings($querySettings);
}
它会影响存储库的所有查询,不管它们是从哪里调用的。
我正在使用 2 个 extbase 扩展产品和应用程序。在产品扩展中,我为产品创建了 TCA,在产品扩展中它的 categories.And 一切都按预期工作。
我想在应用程序扩展中使用产品存储库。我使用了下面的代码并且它工作正常,仅适用于相应的页面。我的要求是我想使用相同的存储库(产品存储库)而不考虑页面 ID。
/**
* productsRepository
*
* @var \VENDOR\Products\Domain\Repository\ProductsRepository
* @inject
*/
protected ProductsRepository = NULL;
我可以使用下面的代码,但 AFIK 它只适用于应用程序扩展
$query->getQuerySettings()->setRespectStoragePage(FALSE);
谁能帮我找到解决办法?
PS:我还没有为应用程序扩展添加任何模型或存储库
在您的产品 ProductsRepository
中,您可以覆盖 initializeObject()
方法:
public function initializeObject() {
/** @var $querySettings \TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface */
$querySettings = $this->objectManager->get('TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface');
$querySettings->setRespectStoragePage(FALSE);
$this->setDefaultQuerySettings($querySettings);
}
它会影响存储库的所有查询,不管它们是从哪里调用的。