Я следую за Symfony 3 Documentation, чтобы отправить электронное письмо от моего контроллера, но я получаю сообщение об ошибке. Я не задумывался о том, чтобы правильно следовать каждому шагу от вышеуказанной страницы, но не использовать.
Так выглядит мой контроллер:
<?php namespace MyBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Response; class DefaultController extends Controller { /** * @Route("/") */ public function indexAction(\Swift_Mailer $mailer) { $message = (new \Swift_Message('Hello Email')) ->setFrom('send@example.com') ->setTo('my.address@gmail.com') ->setBody( $this->renderView( // app/Resources/views/Emails/registration.html.twig 'MyBundle::Emails/registration.html.twig', array('name' => 'John Doe') ), 'text/html' ); $mailer->send($message); return new Response('<html<body>Sent</body></html>'); } }
Это ошибка, которую я получаю:
Контроллер «MyBundle \ Controller \ DefaultController :: indexAction ()» требует, чтобы вы указали значение аргумента «$ mailer». Либо аргумент имеет значение NULL, ни нулевое значение не было предоставлено, значение по умолчанию не было предоставлено или из-за отсутствия необязательного аргумента после этого.
По сравнению с страницей документации, я уверен, что все так, как должно быть, так может кто-нибудь помочь мне найти источник этой ошибки?
Просто удалите $mailer
из вашего конструктора (вы не находитесь в службе, вы находитесь в контроллере) и используйте $this->get('mailer')->send($message);
отправить . (опять же, вы находитесь в контроллере, у вас есть доступ к почтовой службе, нет необходимости пытаться вставлять его в конструктор)
Я думаю, вы не autowiring
в настройках проектов. Таким образом, Swift_Mailer
не вводится автоматически. Включите его или введите почтовую службу вручную.
Узнайте больше об автопогрузке в Symfony.