2013-06-10 4 views
3

Je fais des services et je veux passer 'container' comme argument. parce que je veux utiliser comme çaPasser le 'conteneur' comme argument au service

$user = $this->container->get('security.context')->getToken()->getUser(); 

mon Acme/MemberBundle/Resouces/confite/services.xml est comme ça ci-dessous.

<services> 
    <service id="acme.memberbundle.calendar_listener" class="Acme\MemberBundle\EventListener\CalendarEventListener"> 
     <argument type="service" id="container" /> 
     <tag name="kernel.event_listener" event="calendar.load_events" method="loadEvents" /> 
    </service> 

</services> 

mais il dit «Le service "acme.memberbundle.calendar_listener" a une dépendance à l'égard d'un "conteneur" service inexistant. Comment puis-je passer mon conteneur aux services?

ce problème est lié How to get userid from eventlistener which are called from AJAX

+1

Le nom du service n'est pas 'container', c'est' service_container'. J'ai corrigé la réponse de votre question initiale. PS: Je recommanderais d'injecter le 'security.context' directement au lieu d'injecter le conteneur entier. – igorw

Répondre

4

Le conteneur est enregistré en tant que service appelé « service_container », vous devez donc passer « service_container » et pas seulement « conteneur »:

<argument type="service" id="service_container" /> 

C'est pourquoi actuellement Symfony ne comprend pas ce qu'est le service "container" car il n'y a personne enregistré avec ce nom!

+0

cela fonctionne.merci pour vos bons conseils. Je ne suis pas sûr où je peux trouver «id», mais je vais continuer à étudier. – whitebear

+0

Vous pouvez lister tous les services enregistrés en exécutant cette commande: php app/console container: debug;) – Sybio

Questions connexes