“Class ‘Swift_Message’ not found in” Symfony2

Lösung für die folgende Fehlermeldung:

Fatal error: Class 'Swift_Message' not found in /src/bundle/SomeBundle/Test.php on line 12

Hintergrund war, dass wir im Symfony 2 den SwiftMailer zum Versenden einer E-Mail nutzen wollten. Dazu bietet Symfony 2 standardmässig den Mailer-Service im DependencyInjection-Container an.

$container->get("mailer")

Soweit so gut. Die Symfony-Doku sagt im Abschnitt How to send an Email folgendes:

public function indexAction($name)
{
    $message = \Swift_Message::newInstance()
        ->setSubject('Hello Email')
        ->setFrom('send@example.com')
        ->setTo('recipient@example.com')
        ->setBody($this->renderView('HelloBundle:Hello:email.txt.twig', array('name' => $name)))
    ;
    $this->get('mailer')->send($message);

    return $this->render(...);
}

Die Lösung für das Problem war in unserem Fall, vor der ersten Verwendung von new \Swift_Message den Service $this->get(‘mailer’) zu holen und somit einmal instanzieren zu lassen. Genau nachvollziehen konnten wir das Problem noch nicht, da es nur auf einem von zwei Entwicklungsservern auftrat, aber wir werden dies mit Sicherheit nochmal genauer prüfen.

Also die Lösung zu dem Problem nochmal kurz zusammengefasst:

public function indexAction($name)
{
    $this->get('mailer'); // <<< EINFÜGEN
    $message = \Swift_Message::newInstance();
    ....
    $this->get('mailer')->send($message);
}

Über Pierre

Pierre ist Mitbegründer und einer der beiden Geschäftsführer von next.motion. Seine Leidenschaft äußert sich in der Konzeption und Programmierung komplexer Webanwendungen. Er ist der Richtungsgeber und die treibende Kraft der next.motion für Ihre Webprojekte. Die Liebe zur Sache ist es, was ihn zu einer ständigen Weiterentwicklung treibt, um unseren Kunden kontinuierlich ein modernes Produkt auf der Höhe der Zeit zu bieten.
Dieser Beitrag wurde unter Allgemein, New Media, PHP, Programmierung, Symfony abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>