从FormHandler发送电子邮件

时间:2013-01-24 11:24:35

标签: symfony

我一直在阅读很多关于如何注入服务的文档,但仍未找到解决我问题的简单方法。

问题是:从FormHandler访问邮件服务。当表单有效时,它会发送一封简单的电子邮件。

每次我调用FormHandler时,我都必须将邮件程序作为参数传递,我认为这不是很干净。

那么,如何在没有所有这些参数的情况下从FormHandler访问邮件服务呢?

我在这里:

 $formHandler = new InscriptionHandler($form,
                                          $this->get('request'),
                                          $this->getDoctrine()->getEntityManager(),
                                          $this->get('mailer'),
                                          $this,
                                          $this->getRequest()->getLocale());

然后,构造函数:

        public function __construct(Form $form, Request $request, EntityManager $em, $sm, $ctrl, $locale) {
        $this->form    = $form;
        $this->request = $request;
        $this->em      = $em;
        $this->sm      = $sm;
        $this->ctrl    = $ctrl;
        $this->locale  = $locale;
    }

我想我可以将$ this作为参数传递,但为了更好地理解问题,这就是我编写的代码。

提前致谢, 詹姆斯

1 个答案:

答案 0 :(得分:0)

我认为您需要首先像这样定义服务

# app/config/config.yml
services:
    my_mailer:
        class:        Acme\HelloBundle\Mailer
        arguments:    [sendmail]

你可以像这样使用

$mailer = $this->get('my_mailer');
$mailer->send('ryan@foobar.net', ...);

在这里查看更多信息

http://symfony.com/doc/current/book/service_container.html