在另一个扩展中调用extbase存储库

时间:2015-08-06 09:18:42

标签: extbase typo3-6.2.x

我正在使用2个extbase扩展产品和应用程序。在产品扩展中,我已经为产品及其类别创建了TCA。在产品扩展中,一切都按预期工作。

我想在应用程序扩展中使用产品存储库。我使用下面的代码,它工作正常,仅适用于相应的页面。我的要求是我想使用相同的存储库(产品存储库)而不考虑页面ID。

/**
 * productsRepository
 *
 * @var \VENDOR\Products\Domain\Repository\ProductsRepository
 * @inject
 */
protected ProductsRepository = NULL;

我可以使用下面的代码,但AFIK只能用于应用程序扩展

$query->getQuerySettings()->setRespectStoragePage(FALSE);

任何人都可以帮我找到解决方案吗?

PS:我没有为应用程序扩展添加任何模型或存储库

1 个答案:

答案 0 :(得分:1)

在您的产品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);
}

它将影响存储库的所有查询,无需调用它们的位置。