ユーザーが生成されたときのようなカスタムイベントを作成し、イベントディスパッチャーがそのイベントを発生させます。
私はこのチュートリアルに従っています。class CommentListener
データベースにいくつかのものを保持したいので、エンティティマネージャーにアクセスする方法を知りたいです。
クラスは次のようになります。
class CommentListener
{
protected $mailer;
public function __construct(Swift_Mailer $mailer)
{
$this->mailer = $mailer;
}
public function onCommentEvent(CommentEvent $event)
{
$post = $event->getPost();
$comment = $event->getComment();
foreach ($post->getSubscribers() as $subscriber) {
$message = Swift_Message::newInstance()
->setSubject('New comment posted on ' . $post->getTitle())
->setFrom('send@example.com')
->setTo($subscriber->getEmail())
->setBody("Hey, somebody left a new comment on a post you're subscribed to! It says: " . $comment->getBody())
;
$this->mailer->send($message);
}
}
}
では、どのようにしてエンティティマネージャーにアクセスできますonCommentEvent
か?