Manolo
Manolo

Reputation: 26370

Error passing ContainerInterface as a parameter

Why am I getting this error when trying to get the ContainerInterface:

ERROR - exception 'ErrorException' with message 'Catchable Fatal Error: Argument 5 passed to Project\InvitationsBundle\Invitations::__construct() must implement interface Symfony\Component\DependencyInjection\ContainerInterface, none given, called in /www/project/app/cache/dev/appDevDebugProjectContainer.php on line 1709 and defined in /www/project/src/Project/InvitationsBundle/Invitations.php line 23' 

And the error comes when adding ContainerInterface to the construct method:

<?php

namespace Pro\InvitationsBundle;

use Pro\CommunityBundle\Entity\Community;
use Pro\InvitationsBundle\Entity\Invitation;
use Doctrine\Bundle\DoctrineBundle\Registry;
use Symfony\Component\Translation\TranslatorInterface;
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
use Pro\UserBundle\Entity\User;
use Symfony\Component\DependencyInjection\ContainerInterface;

class Invitations
{
    private $mailer;
    private $translator;
    private $templating;
    private $doctrine;
    private $container;


    function __construct(\Swift_Mailer $mailer, TranslatorInterface $translator, EngineInterface $templating,
        Registry $doctrine, ContainerInterface $container)
    {
        $this->mailer = $mailer;
        $this->translator = $translator;
        $this->templating = $templating;
        $this->doctrine = $doctrine;
        $this->container = $container;
    }
    ...
}

Upvotes: 2

Views: 4998

Answers (1)

NHG
NHG

Reputation: 5877

Probably you have wrong service definition. You should inject all of Invitations arguments, like:

invitations:
    class: Redconvive\InvitationsBundle\Invitations
    arguments: [@mailer, @translator, @templating, @doctrine, @service_container]

Probably you forgot about @service_container.

Btw. Please notice, that injecting whole container is bad idea. You should inject only necessary services.

Upvotes: 6

Related Questions