根据 the documentation ,命令类必须扩展 Command 或 ContainerAwareCommand 才能自动发现和注册(当然,前提是它的包已在内核中注册)。

从 Symfony 4+ 开始,这个发现不能按预期工作。

试试这个:

composer create-project symfony/skeleton test-maxmind-sf4
cd test-maxmind-sf4
composer req cravler/maxmind-geoip-bundle dev-master
php bin/console list

你会注意到:
  • cravler:maxmind:geoip-update 未注册(“cravler”命名空间下没有任何内容
  • Cravler\MaxMindGeoIpBundle\Command\UpdateDatabaseCommand 扩展 ContainerAwareCommand
  • Bundle Cravler\MaxMindGeoIpBundle\CravlerMaxMindGeoIpBundle 在 config/bundles.php 中为所有环境注册(自动生成的配方)

  • 现在当我用 Symfony 3 做同样的事情时,一切正常。
    composer create-project symfony/skeleton test-maxmind-sf3 ^3.0
    cd test-maxmind-sf3
    composer req cravler/maxmind-geoip-bundle dev-master
    php bin/console list
    

    那里缺少什么?

    谢谢,

    最佳答案

    来自 UPGRADE FROM to 4.0 指南 here :



    希望这有帮助

    关于Symfony 4 - 不再自动发现 3rd-party bundle 命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49134340/

    10-10 08:11