服务“fos_user.mailer”依赖于不存在的服务“模板”

Posted

技术标签:

【中文标题】服务“fos_user.mailer”依赖于不存在的服务“模板”【英文标题】:The service "fos_user.mailer" has a dependency on a non-existent service "templating" 【发布时间】:2018-05-18 09:49:31 【问题描述】:

所以,在我为几个 Symfony 项目使用 FOSUserBundle 之后,突然开始出现上述错误。

我已经尝试过包含模板服务(现在两次),它似乎安装得很好。这是我在 composer.json 中的要求列表:

"require": 
    "php": ">=5.5.9",
    "doctrine/doctrine-bundle": "^1.6",
    "doctrine/orm": "^2.5",
    "friendsofsymfony/user-bundle": "^2.0",
    "incenteev/composer-parameter-handler": "^2.0",
    "sensio/distribution-bundle": "^5.0.19",
    "sensio/framework-extra-bundle": "^5.0.0",
    "symfony/monolog-bundle": "^3.1.0",
    "symfony/polyfill-apcu": "^1.0",
    "symfony/swiftmailer-bundle": "^2.6.4",
    "symfony/symfony": "3.4.*",
    "symfony/templating": "^3.4",
    "twig/twig": "^1.0||^2.0"
,

我已经像往常一样设置了 config.yml、security.yml 和 routing.yml 文件,并将包包含在 AppKernel.php 文件中。我还创建了 User.php 实体,但每次尝试清除缓存或更新数据库时,都会出现此错误。

服务“fos_user.mailer”依赖于一个不存在的 服务“模板”

经过大量搜索后,我看不到在哪里解决此问题。对此的任何帮助都非常感谢,因为这是以前从未发生过的事情,而且我一直使用 FOSUserBundle 来满足我的安全需求。

【问题讨论】:

我想你已经仔细检查了 framework:template:engines:['twig'] 是在 config.yml 中设置的吗? 我在配置中有这个:# Twig Configuration twig: debug: '%kernel.debug%' strict_variables: '%kernel.debug%' 您还需要在框架部分输入一个条目。 【参考方案1】:

我刚刚遇到了完全相同的问题。有趣的是,我在创建 Symfony 3.4 项目之前创建了一个 Symfony 3.3 项目,而 Symfony 3.3 项目没有这个问题。所以他们一定已经删除了 3.4 版本的模板组件。

要解决您的问题,您必须使用 composer 安装模板组件:

composer require symfony/templating

然后,在 config.yml 的 framework 键下添加以下配置:

templating:
    engines: ['twig']

更新:我最近不得不使用 FOSUserBundle 启动一个新的 Symfony 3.4 项目,发现我只需将上述配置添加到我的 config.yml 文件中(如 a comment below 中所述) .

【讨论】:

感谢您的回答:) 提示那些在 SF 3.x 中修复此问题的人,请使用特定版本 3.4.2 安装:“composer require symfony/template v3.4.2”,否则您将获得依赖版本异常symfony/模板的日期在 Symfony 4 的 v4.x 中(如果未指定,composer 会自动安装最新版本)。 除了接受的答案之外,似乎已经安装了模板引擎,但出于某种原因,它只是从配置文件中删除了,所以任何有同样问题的人,首先尝试添加接受的答案中所说的内容.它对我有用,我确信我没有在 FOSUserBundle 之外安装任何东西。 我遇到了同样的问题,但是在安装 symfony/模板包之前,我只是按照您的建议尝试了模板引擎定义,令我惊讶的是,它起作用了。所以,我只有配置定义,不需要执行composer。 非常感谢,这帮助我解决了一个让我困惑了一段时间的错误。错误消息是:服务“Sonata\UserBundle\Action\RequestAction”依赖于不存在的服务“模板”。只需在 config.yml 中的 framework 键下添加配置即可修复它。干杯!【参考方案2】:

在 Symfony 3.4 和 FosUserBundle 2.0 中,将服务邮件程序添加到 fos_user 配置中:

fos_user:
    db_driver: orm # other valid values are 'mongodb' and 'couchdb'
    firewall_name: main
    user_class: AppBundle\Entity\User
    service:                               # this lines
        mailer: fos_user.mailer.twig_swift # this lines
    from_email:
        address: "%mailer_user%"
        sender_name: "%mailer_user%

【讨论】:

它与一个全新的 Symfony 3.4 项目完美配合。谢谢! 提供的解决方案不适用于 3.4,您的回答救了我!谢谢分享! 谢谢,它在 3.4 上也适用于我。但是,这是什么意思 ?我认为这是为了表明 fos_user 邮件服务是 TwigSwiftMailer。但是fos_user.mailer.twig_swift 是在哪里定义的? Symfony 3.4 的正确答案。 这是正确答案,我觉得这个最好有绿色的正确标记【参考方案3】:

在我的情况下,在 config.yml 中更改后它可以工作,如下所示:

# FOSUser Configuration
fos_user:
    db_driver: orm # other valid values are 'mongodb' and 'couchdb'
    firewall_name: main
    user_class: AppBundle\Entity\User
    service:                               # this line
        mailer: fos_user.mailer.twig_swift # this line (from the comment above)
    from_email:
        address: "test@test.com" # change this 
        sender_name: "Test App"  # and this

【讨论】:

以上是关于服务“fos_user.mailer”依赖于不存在的服务“模板”的主要内容,如果未能解决你的问题,请参考以下文章

服务“admin.category”依赖于不存在的服务“sonata.admin.manager.orm”

服务“security.authentication.manager”依赖于不存在的服务“security.user.provider.concrete.fos_userbundle”

GKPeerStateAvailable 是不是适用于不存在的对等点?

TestNG 依赖于不同类的方法

无法让我的邮件服务在Symfony 4中运行

jOOQ 依赖于不稳定版本的 r2dbc-spi 库