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 に答える