Ran*_*ngh 2 php events symfony doctrine-orm
我创建了自定义事件,例如当用户被生成时,事件调度程序将触发该事件.
我正在学习本教程.我想知道他在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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么如何在内部访问实体管理器onCommentEvent?
听众是正常的服务.你可以将它同时注入构造函数中mailer.这些方面的东西:
服务:
services:
foo_bundle.listener.comment:
class: FooVendorBarBundleEventListenerCommentListener
arguments:
mailer: "@mailer"
entityManager: "@doctrine.orm.entity_manager"
tags:
- { name: kernel.event_listener, event: foo_bundle.post.comment_added, method: onCommentEvent }
Run Code Online (Sandbox Code Playgroud)
听众课程:
class CommentListener
{
protected $mailer;
protected $entityManager;
public function __construct(Swift_Mailer $mailer, $entityManager)
{
$this->mailer = $mailer;
$this->entityManager = $entityManager;
}
...
Run Code Online (Sandbox Code Playgroud)
如果您需要找出某些服务运行的名称php app/console container:debug.
| 归档时间: |
|
| 查看次数: |
3558 次 |
| 最近记录: |