Auf Container in Symfony Command (cli) zugreifen (ContainerAwareCommand)

geposted am 23.01.2018, in Symfony

Soll ein Command auf Services (z.B. Mail) zugreifen können, erstellt man den Command als ContainerAwareCommand.

Statt:

class customCommand extends Command

schreibt man dann 

//...
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;

class CustomCommand extends ContainerAwareCommand

dann kann man z.B. im Script Templates rendern und Mails versenden (oder beides):

       $mailcontent = $this->getContainer()->get('templating')->render('email/usernotification.html.twig', $data);
        $message = (new \Swift_Message('Mailsubject'))
                ->setFrom('noreply@bla.com')
                ->setTo($data['email'])
                ->setBody($mailcontent, 'text/html');

        return $this->getContainer()->get('mailer')->send($message);