当前位置: 首页 > 知识库问答 >
问题:

在Symfony命令中使用Extbase存储库

颜熙云
2023-03-14

我正在升级一个扩展,以使用TYPO3 v10。由于命令控制器不能再使用,我将它们迁移到由留档指向的symfony命令。除了使用extbase存储库类之外,一切都非常顺利。无论我查询什么,我从来没有得到一个结果。因为我找不到任何有用的信息在网上和留档我希望这可能只是一些次要的。

调试一段时间后,我发现pid在构建查询设置时没有正确确定。我发现这种奇怪,因为我的根模板有这些行:

plugin.tx_myext.persistence.storagePid = 15403
module.tx_myext.persistence.storagePid = 15403

injectMyRepository()方法正确注入了存储库实例。我尝试使用extbase ObjectManager取回类实例,但“错误”保持不变。

我是做错了什么,还是不能在symfony命令中使用extbase存储库类?

共有1个答案

何升
2023-03-14

经过更多的研究,我发现有一些引导缺失,导致扩展设置(在我的情况下是存储ID)没有被加载。据我所知,这种行为似乎是为了防止Extbase启动,我猜?

官方文件中也提到了类似的内容:https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/CommandControllers/Index.html#initialize-后端用户知道这一点,我试图找到一种方法来初始化我找不到的缺少的设置。因此,这确实似乎是一个缺失的功能。

我开发了一个我不太引以为傲的解决方案,但总比什么都没有好(或者把一切都重建成教义)。如果你遇到了同样的问题,那就来吧。在启动查询之前,只需插入并调用此方法:

php prettyprint-override">public static function initializeConfigurationManager(): void
{
    /** @var ConfigurationManager $configurationManager */
    $configurationManager = GeneralUtility::makeInstance(ConfigurationManager::class);
    $tmpConfiguration = $configurationManager->getConfiguration(
        ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK,
        'myExtensionName'
    );

    $configurationManager->setConfiguration($tmpConfiguration);
}

这种方法利用ConfigurationManager的单例状态。您只需手动注入扩展的静态模板,然后每个extbase复合(如存储库)将从此处开始使用这些设置。美丽的

然而,请注意,这很容易与未来的内部变化决裂。

 类似资料:
  • 问题内容: 我正在尝试构建一个将表名称作为参数的Oracle存储过程。然后,该过程将重建表上的所有索引。 我的问题是从存储过程中使用ALTER命令时出现错误,好像PLSQL不允许该命令一样。 问题答案: 这有两种可能。首先,您必须将SQL视为动态SQL。其次,Oracle DDL语句不能在事务中运行(或者,它们终止当前事务并且本身不能回滚)。这可能会影响您是否可以在存储过程中使用它们,或者可以在何

  • var res=stmt.execute();返回res$$; 预期的返回是一个表的列表,实际的结果是NaN。

  • 音乐椅。音乐椅是一种儿童游戏,玩家在播放音乐的同时绕着一组椅子走。当音乐停止时,每个人都必须坐下。但是,椅子比人少一个,所以有人被排除在外。事实上,那个人已经出局了。一把椅子被移走了。并且再次进行游戏;其他人出去了。这样一直持续到只剩下一个玩家,赢家。 我在播放器[]中存储命令行参数时遇到问题 这是我的代码

  • 我有一个MySQL数据库,其中有些内容是用Ckeditor创建的。文本存储方式如下: ,HTML实体也是如此。 对于Twig,在Symfony项目中,当我要显示数据时,我对此字段使用但它显示 所以它没有完全解码和解释... 使用PHP我没有问题,可以很好地完成这项工作。 你能帮帮我吗?怎么啦? 根据需要,更多代码:在MySQL中的utf8_general_ci列“vtexte” 在symfony中

  • 问题内容: 我需要将两个对象注入。其中一个是的实例,我得到这样的信息: 那么如何在我的services.yml中声明呢?这是服务: 问题答案: 我找到了此链接,这对我有用: