在另一个扩展中调用 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);
}

它会影响存储库的所有查询,不管它们是从哪里调用的。