0

我已经阅读了很多关于如何注入服务等的文档,但仍然没有找到一个简单的解决方案来解决我的问题。

问题是:从 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 作为参数传递,但为了更好地理解问题,这就是我编写的代码。

在此先感谢,詹姆斯

4

1 回答 1

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

于 2013-01-24T12:14:27.677 回答