【问题标题】:Magento2: How do inject dependencies into CLI commandsMagento2:如何将依赖项注入 CLI 命令
【发布时间】:2020-10-27 01:57:37
【问题描述】:

我试图弄清楚如何在 Magento 2 CLI 命令中正确使用或注入依赖项。来自https://devdocs.magento.com/guides/v2.4/extension-dev-guide/cli-cmds/cli-howto.html

您的命令可以使用对象管理器和 Magento 依赖注入功能;例如,它可以使用构造函数依赖注入。

对象管理器 (Magento\Framework\App\ObjectManager) 很简单,尽管文档的其他部分出于某种原因不鼓励使用它。 “构造函数依赖注入”如何与 CLI 命令一起使用? Symfony\Component\Console\Command\Command 的构造函数只接受一个字符串,所以这似乎没有意义。

【问题讨论】:

    标签: magento magento2


    【解决方案1】:

    是的,您可以在 CLI 命令的构造函数中使用依赖注入。

    您可以查看一些 Magento 原生 CLI。 例如php bin/magento store:list,您可以查看Magento\Store\Console\Command\StoreListCommand。他们将 storeManager 注入到构造函数中以正常使用它

    【讨论】:

    • 我无法让 DI 工作的原因是因为 DI 参数缓存在 generated 目录中。如果不手动删除这个目录,我对构造函数所做的更改将不会生效。
    【解决方案2】:

    我发现构造函数依赖项缓存在generated (M2.4.1) 目录中,必须手动删除该目录才能使 DI 正常工作。除此之外,关注https://devdocs.magento.com/guides/v2.4/extension-dev-guide/cli-cmds/cli-howto.html 有效。

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2014-04-19
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2016-10-05
      • 2021-11-28
      相关资源
      最近更新 更多