【问题标题】:Cannot inject foreign repository into my controller无法将外部存储库注入我的控制器
【发布时间】:2021-10-06 02:28:10
【问题描述】:

我遇到了一个关于我为 Typo3 编写的插件的问题。我想访问不同插件中插件的存储库(及其内容)。就像将东西从一个插件导入到另一个插件一样。我尝试在我的控制器中使用@inject,但结果为空。

    /**
     * @var \Sebkln\Ajaxselectlist\Domain\Repository\OptionRecordRepository
     */
    protected $optionRecordRepository = null;

    /**
     * @param \Sebkln\Ajaxselectlist\Domain\Repository\OptionRecordRepository
     */
    public function injectOptionRecordRepository(\Sebkln\Ajaxselectlist\Domain\Repository\OptionRecordRepository $optionRecordRepository) {
        $this->optionRecordRepository = $optionRecordRepository;
    }

还有我的动作函数:

$standorts = $this->optionRecordRepository->findAll();
$this->view->assign('standorts', $standorts);

我的 Typo3 版本是 9.5,所以可能有人知道我应该做什么。提前致谢。

【问题讨论】:

  • 不确定,但我记得有一些依赖项...您的扩展是否需要另一个或确实声明了依赖项(通过 ext_emconf.php/composer.json)?否则,IMO 可能会导致错误的装载订单。
  • @Julian 不,它不依赖于其他一些分机,但为了取得进展,我需要在我自己的插件中记录不同的插件。我可以查看 json 文件。谢谢你的建议,我回来了:)
  • 啊,好吧,误会了。在编辑控制器的这些基础知识后,您是否清除了缓存? (管理员 -> 维护 -> “刷新 TYPO3 和 PHP 缓存”)

标签: php typo3 typo3-9.x


【解决方案1】:

您必须设置存储记录的 storagePid。

plugin.tx_[lowercasedextensionname] {
  persistence {
    storagePid = 12,22
  }
}

如果记录存储在未知位置,则在存储库中忽略它。

/**
  * Initializes the repository.
  */
public function initializeObject()
{
    /** @var \TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface $querySettings */
    $querySettings = $this->objectManager->get(QuerySettingsInterface::class);
    $querySettings->setRespectStoragePage(false);
    $this->setDefaultQuerySettings($querySettings);
}

【讨论】:

  • 好吧,我可以试试。谢谢,我尝试后分享结果
  • 这么简单的解决方案却没想到。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多