2016-06-10 3 views
1

Hey ich spiele gerade mit Symfony3, lese diesen docs über Service Container. Acording auf die docs die Dienste in app/config/services.yml deklariert sind wie folgt:Symfony3 Service Container docs Fehler

# app/config/services.yml 
services: 
    app.mailer: 
     class:  AppBundle\Mailer 
     arguments: [sendmail] 

und ich kann es Zugriff in meinem Controller/Klassen wie folgt aus:

<?php 

namespace Test\TestBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class HelloController extends Controller 
{ 
    public function sendEmailAction() 
    { 
     // ... 
     $mailer = $this->get('app.mailer'); 
     var_dump($mailer);die(); 
//  $mailer->send('[email protected]', ...); 
    } 
} 

ich getan habe exacley aber ich erhalte diesen Fehler:

You have requested a non-existent service "app.mailer". 

Was kann ich in diesem einfachen Beispiel falsch machen, fehlt mir etwas.

Ich habe auch festgestellt, dass es eine weitere Services/Yml-Datei unter Bundle/Resources/config.srivices.yml gibt. Welcher zu welchem ​​Zeitpunkt und warum ...?

+0

Überprüfen Sie die Dokumentation erneut, da Ihr sendmail-Argument falsch ist, obwohl das das Problem nicht verursacht. Ich vermute, dass Sie im Produktionsmodus laufen und den Cache möglicherweise nicht löschen. Und Sie laufen S3 im Gegensatz zu einer älteren Version von S2? – Cerad

+0

Hey, warum würde das Argument falsch sein? so oder so sollte es in diesem fall mit anderen fehler kommen, ich habe den cache in meinem ur ich spezyfie localhost löschen: 8000/app_dev.php/was auch immer. Plus die Dokumente sagen, dass sie Version 3.1 sind. – John

+0

Ich dachte nur ein bisschen seltsam, dass Sie die Zeichenfolge 'sendmail' als Konstruktorargument senden möchten. Aber wie gesagt, das würde diese Art von Fehler nicht verursachen. Sind Sie sicher, dass Sie Leerzeichen und keine Tabs in der YAML-Datei verwenden? Der Import-Abschnitt von config.yml enthält noch Dienste? Alles sehr geheimnisvoll. Könnte versuchen, ein neues Projekt zu starten und nichts anderes zu tun, als einen Dienst zu erstellen und ihn vom Standard-Controller aus aufzurufen. – Cerad

Antwort

0

Der Dienst app.mailer scheint nicht zu existieren. Sie sollten es überprüfen, indem Sie diesen Befehl in cli ausgeführt wird: bin/console debug:container app.mailer

I have also noticed that there is another services/yml file under Bundle/Resources/config.srvices.yml. Which one to use when and why...?

Sie Bundle/Resources/config/* verwenden sollten nur, wenn Ihr Paket wird mit einer anderen Anwendung/Open Source freigegeben werden. Wenn nicht, verwenden Sie app/config/services.yml.

+0

für den zweiten Teil, dass Sie Sinn machen, aber Tippfehler in $ this ...? – John

+0

Weil der Fehler "auf Null" ist? Können Sie den gesamten Controller teilen? – mykiwi

+0

Bitte werfen Sie einen Blick auf meine Updates – John