【问题标题】:Error after updating symfony/swiftmailer-bundle to 2.2.5将 symfony/swiftmailer-bundle 更新到 2.2.5 后出错
【发布时间】:2013-08-13 12:24:17
【问题描述】:

使用 composer.phar 更新将 symfony/swiftmailer-bundle 更新到 v2.2.5 后,我收到这样的错误:

Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing symfony/swiftmailer-bundle (v2.2.4)
  - Installing symfony/swiftmailer-bundle (v2.2.5)
    Loading from cache

Writing lock file
Generating autoload files



  [Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]  
  The service definition "swiftmailer.mailer" does not exist.                 



Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception



  [RuntimeException]                                                         
  An error occurred when executing the "'cache:clear --no-warmup'" command. 

降级到 2.2.4 后问题已修复

Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing symfony/swiftmailer-bundle (v2.2.5)
  - Installing symfony/swiftmailer-bundle (v2.2.4)
    Loading from cache

Writing lock file
Generating autoload files
Clearing the cache for the dev environment with debug true
Installing assets using the hard copy option
Installing assets (part of code removed)

【问题讨论】:

    标签: symfony composer-php swiftmailer


    【解决方案1】:

    您绝对应该使用mailer 服务,因为它是正确 swiftmailer 服务的别名,无论它如何命名。例如 im v2.3.3 它是swiftmailer.mailer.default

    但你必须使用

    $container->findDefinition('mailer');
    

    getDefinition() 不同,它还解析别名,因此如果$serviceId 参数是别名,您将获得底层定义。

    【讨论】:

    • 我一开始就尝试做。但是当我打电话时: $container -> getDefinition('mailer');我收到一个错误:'InvalidArgumentException:服务定义“邮件程序”不存在。'
    • 有没有办法通过别名获取定义?当我调用 $container -> getAlias('mailer') 时,我得到了类 \Symfony\Component\DependencyInjection\Alias 的对象,只有 2 个方法 - isPublic、setPublic(boolean)。非'getAliasedDefition'...
    【解决方案2】:

    触发错误的行是:

    $definition = $container->getDefinition('swiftmailer.mailer') ;
    

    错误是由更改服务名称引起的。直到 2.2.4 这个名字是

    swiftmailer.mailer
    

    从 2.2.5 开始是:

    swiftmailer.mailer.abstract
    

    我把这行改成:

    $definition = $container->hasDefinition('swiftmailer.mailer') ? $container->getDefinition('swiftmailer.mailer') : $container->getDefinition('swiftmailer.mailer.abstract');
    

    这修正了错误。

    【讨论】:

    • 为什么不使用mailer 定义?
    • 我一开始就尝试这样做,但我得到的只是:'InvalidArgumentException:服务定义“邮件程序”不存在。'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    相关资源
    最近更新 更多