【问题标题】:TYPO3 symfony console command: where to put/get configuration settings?TYPO3 symfony 控制台命令:在哪里放置/获取配置设置?
【发布时间】:2021-04-17 06:43:37
【问题描述】:

我编写了一个 symfony 控制台命令,用于从远程服务器下载 CSV 文件并将这些文件中的数据导入我的扩展程序的一些数据库表中。到目前为止,这工作正常(从 CLI 或调度程序运行)。

但要做到这一切,我需要一堆配置设置(远程服务器的凭据、要下载的文件列表、storagePid 等),但我不知道将它们放在哪里。暂时都是硬编码的,这显然很糟糕。当然,我可以发明自己的配置文件,将其放在合理的地方并将其包含在我的代码中。但这似乎是混乱和随意的。

是否有推荐/最佳实践方式来存储此类配置设置?理想情况下,我希望它们出现在我的站点包中。对于 FE 插件,我们有 Typoscript 设置 + 常量,我们可以对 BE 模块使用类似的机制。但是这种 CLI 上下文的最佳策略是什么?

【问题讨论】:

    标签: symfony typo3 typo3-10.x typo3-console


    【解决方案1】:

    我认为你可以使用扩展配置(ext_conf_template.txt),你可以在那里设置所有配置,我猜它可以通过调度程序和 CLI 访问,使用这个 API:

    $extensionConfiguration = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(ExtensionConfiguration::class)->get('my_extension_key');
    

    您可以在这里找到更多信息:Extension configuration

    在您的命令类中,您可以使用函数 Command::configure() 来初始化命令配置。

    见:Symfony Console Command

    【讨论】:

    • 我也想过这一点,它肯定比硬编码的方法好得多。但我认为扩展配置不太适合包含在站点包中。
    • 恕我直言,我认为这是将配置放入包含 CLI 命令的扩展中的好地方,如果它是站点包扩展,您为什么不认为它不太适合?
    • 我不确定我明白你的意思。您是否建议我将导入器扩展的配置放入站点包的扩展配置中并从那里加载?但是我有另一个硬编码的依赖项,因为站点包的名称是特定于站点/项目的,并且在另一个项目中可能会有所不同。
    • 不,我建议您将配置放在实现 CLI 命令的 Typo3 扩展中,然后在您安装此扩展的每个站点上,您可以通过扩展配置配置设置(凭据用于远程服务器、要下载的文件列表、storagePid 等)。
    • 所以配置设置不在站点包中...我对站点包的理解是所有特定于站点的设置+配置都应该进入站点包。这就是为什么我认为如果您使用站点包,扩展配置并不理想。
    猜你喜欢
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    相关资源
    最近更新 更多