私はSymfony Sonataバンドルで注文を作成するとすぐに特定の人に電子メールを送信しようとします。電子メールが送信される人物は、ユーザーが注文を承認するために選択した人物です。Symfonyで電子メールサービスを作成
私はservice container documentation on Symfony's websiteに従うことを試みますが、それは私にとってはあまりにも不完全であると感じています。私は、いくつかのスニペットだけでなく、完全な例を見たいと思います。
これまでのメールサービスクラスです。
<?php
namespace Qi\Bss\BaseBundle\Lib\PurchaseModule;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Doctrine\ORM\EntityManager;
/**
*
*/
class Notifier
{
/**
* Service container
* @var type
*/
private $serviceContainer;
public function notifier($subject, $from, $to, $body) {
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($from)
->setTo($to)
->setBody($body)
;
$this->serviceContainer->get('mailer')->send($message);
}
/**
* Sets the sales order exporter object
* @param type $serviceContainer
*/
public function setServiceContainer($serviceContainer)
{
$this->serviceContainer = $serviceContainer;
}
}
私services.ymlファイル内の私のサービスはこのようになります。
bss.pmod.order_notifier:
class: Qi\Bss\BaseBundle\Lib\PurchaseModule\Notifier
arguments: ["@mailer"]
そして、私はコントローラのアクションでサービスを呼び出すときに、私はこの行を使用します。
$this->get('bss.pmod.order_notifier')->notifier();
私は状態を取得していますエラー。
お知らせ:未定義のプロパティ: チー\はBss \ FrontendBundle \コントローラ\ PmodOrderController :: $ serviceContainer
私はservice container documentation見てきたが、私は理解できない、前に言ったようにそれ。
誰かがすべてを説明してくれる素敵な完全な例を教えてくれますか?
はありがとうございました!今、私は最終的にドキュメントで何が起こっているかを見ています。私がいつも見ることができない馬鹿なもの、そしてその後、私はとても馬鹿だ。ありがとう! –
この手順をパスしたので、次の段階でイベントリスナーを作成し、注文が作成されるたびにコントローラにイベントを送信させることができます。リスナーは電子メールを送信するだけでなく、注文が作成されたときに実行する必要があるその他の作業を行うこともできます。これにより、コントローラが簡素化され、ビジネスロジックを分離するのに役立ちます。もちろん必須ではありませんが、考えられるものは – Cerad
です。これでコンストラクタに別の依存関係を追加することができます。 '@ templating'は' HTML'メールを送信できます。 –