我一直在阅读很多关于如何注入服务的文档,但仍未找到解决我问题的简单方法。
问题是:从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作为参数传递,但为了更好地理解问题,这就是我编写的代码。
提前致谢, 詹姆斯
答案 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', ...);
在这里查看更多信息