The service "fos_user.mailer" has a dependency on a non-existent service "templating"
Asked Answered
T

3

40

So, the above error has suddenly started happening, after I've been using FOSUserBundle for several Symfony projects.

I've tried including the templating service (twice now) and it seems like it's installed fine. Here is my list of requires in my 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"
},

I've set up the config.yml, security.yml and the routing.yml files as per usual, and included the bundle in the AppKernel.php file. I've also created the User.php Entity but every time I try to clear the cache or update the database, I get this error.

The service "fos_user.mailer" has a dependency on a non-existent service "templating"

And after much searching I cannot see where to fix this problem. Any help with this is much appreciated as it's something that's never happened before, and I've always used FOSUserBundle for my security needs.

Taffrail answered 4/12, 2017 at 20:44 Comment(3)
I suppose that you have double checked that framework:templating:engines:['twig'] is set in config.yml?Baud
I have this in config: # Twig Configuration twig: debug: '%kernel.debug%' strict_variables: '%kernel.debug%'Taffrail
You also need an entry in the framework section.Baud
P
75

I just experienced the exact same problem. The funny thing is that I created a Symfony 3.3 project just before creating a Symfony 3.4 project and the Symfony 3.3 project didn't have this problem. So they must have removed the templating component for the 3.4 release.

To solve your problem, you will have to install the templating component using composer:

composer require symfony/templating

Then, add the following configuration under the framework key in your config.yml:

templating:
    engines: ['twig']

Update: I recently had to start a new Symfony 3.4 project with FOSUserBundle and discovered that I only had to add the above configuration to my config.yml file (as was mentioned in a comment below).

Poorly answered 9/12, 2017 at 1:2 Comment(5)
Thanks for your answer :)Cobby
Tip for those who are fixing this in SF 3.x, install with the specific version 3.4.2: "composer require symfony/templating v3.4.2" or you will get a dependencies version exception as till the date symfony/templating is in v4.x for Symfony 4 (composer installs automatically latest version if not specified).Eyecatching
In addition to accepted answer, it seems that templating engine is already installed but it's just, for some reason, removed from config file, so anyone having the same problem, first try adding what's said in accepted answer. It worked for me and I'm sure that I didn't install anything beside FOSUserBundle.Fungible
I had the same problem but before installing the symfony/templating bundle, I just tried with the templating engine definition as per your advice, and to my astonishment, it worked. So, I just have the configuration definition and did not need to execute the composer.Monseigneur
Thanks a lot, this has helped me fix an error that had me puzzled for a while. The error message was: The service "Sonata\UserBundle\Action\RequestAction" has a dependency on a non-existent service "templating". Fixed it just by adding the configuration under the framework key in config.yml. Cheers!Vinegarette
T
90

In Symfony 3.4 and FosUserBundle 2.0, add a service mailer into the fos_user config:

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%
Thyroiditis answered 22/12, 2017 at 13:45 Comment(7)
It worked perfectly with a fresh Symfony 3.4 project. Thank you!Joab
Provided solution didn't work with 3.4, your answer saved me! Thx for sharing!Rustication
Thanks, it's work for me on 3.4 too. But what does that mean ? I think it's to indicate fos_user that the mailer service is TwigSwiftMailer. But where fos_user.mailer.twig_swift is defined ?Fouquet
Correct answer for Symfony 3.4.Mincey
This is the correct answer, i think that it will be better that this one have the green correct markPlasmosome
Thanks @Thyroiditis your answer is solved my problem in early morning.Stansberry
correct answer for symfony 4.2, in config/packages/fos_user.yamlDeberadeberry
P
75

I just experienced the exact same problem. The funny thing is that I created a Symfony 3.3 project just before creating a Symfony 3.4 project and the Symfony 3.3 project didn't have this problem. So they must have removed the templating component for the 3.4 release.

To solve your problem, you will have to install the templating component using composer:

composer require symfony/templating

Then, add the following configuration under the framework key in your config.yml:

templating:
    engines: ['twig']

Update: I recently had to start a new Symfony 3.4 project with FOSUserBundle and discovered that I only had to add the above configuration to my config.yml file (as was mentioned in a comment below).

Poorly answered 9/12, 2017 at 1:2 Comment(5)
Thanks for your answer :)Cobby
Tip for those who are fixing this in SF 3.x, install with the specific version 3.4.2: "composer require symfony/templating v3.4.2" or you will get a dependencies version exception as till the date symfony/templating is in v4.x for Symfony 4 (composer installs automatically latest version if not specified).Eyecatching
In addition to accepted answer, it seems that templating engine is already installed but it's just, for some reason, removed from config file, so anyone having the same problem, first try adding what's said in accepted answer. It worked for me and I'm sure that I didn't install anything beside FOSUserBundle.Fungible
I had the same problem but before installing the symfony/templating bundle, I just tried with the templating engine definition as per your advice, and to my astonishment, it worked. So, I just have the configuration definition and did not need to execute the composer.Monseigneur
Thanks a lot, this has helped me fix an error that had me puzzled for a while. The error message was: The service "Sonata\UserBundle\Action\RequestAction" has a dependency on a non-existent service "templating". Fixed it just by adding the configuration under the framework key in config.yml. Cheers!Vinegarette
H
2

For my case, it's work after changing in the config.yml like below:

# 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: "[email protected]" # change this 
        sender_name: "Test App"  # and this
Handmade answered 30/9, 2019 at 11:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.