Symfony (5.1) Doctrine 事件监听器被触发但实体监听器没有被触发
Symfony (5.1) Doctrine Event Listener is fired but not Entity Listener
使用Symfony official documentation,
我正在清理一些代码并想替换 Symfony 中的 Doctrine 事件侦听器(工作):
namespace App\EventListener;
use App\Entity\Comment;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class CommentAuthorAssignmentListener
{
private $tokenStorage;
public function __construct(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
public function prePersist(Comment $comment, LifecycleEventArgs $event)
{
dump($comment, $event); exit;
$comment->setAuthor($this->tokenStorage->getToken()->getUser());
}
}
services:
App\EventListener\CommentAuthorAssignmentListener:
autowire: true
tags:
- { name: doctrine.event_listener, event: prePersist }
使用更具体的实体侦听器(没有错误但根本没有启动):
namespace App\EventListener;
use App\Entity\Comment;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class CommentAuthorAssignmentListener
{
private $tokenStorage;
public function __construct(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
public function prePersist(Comment $comment, LifecycleEventArgs $event)
{
$comment->setAuthor($this->tokenStorage->getToken()->getUser());
}
}
services:
App\EventListener\CommentAuthorAssignmentListener:
autowire: true
tags:
- { name: doctrine.entity_listener , entity: 'App\Entity\Comment', event: prePersist }
一些注意事项:
- 我做到了运行
cache:clear
- 用例:显式持久化(新创建的)评论
看起来你打错了:
# these are the options required to define the entity listener
name: 'doctrine.orm.entity_listener'
event: 'postUpdate'
entity: 'App\Entity\User'
注意“.orm”。在标签名称中,因此对于您的用例:
services:
App\EventListener\CommentAuthorAssignmentListener:
autowire: true
tags:
- { name: doctrine.orm.entity_listener , entity: 'App\Entity\Comment', event: prePersist }
使用Symfony official documentation, 我正在清理一些代码并想替换 Symfony 中的 Doctrine 事件侦听器(工作):
namespace App\EventListener;
use App\Entity\Comment;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class CommentAuthorAssignmentListener
{
private $tokenStorage;
public function __construct(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
public function prePersist(Comment $comment, LifecycleEventArgs $event)
{
dump($comment, $event); exit;
$comment->setAuthor($this->tokenStorage->getToken()->getUser());
}
}
services:
App\EventListener\CommentAuthorAssignmentListener:
autowire: true
tags:
- { name: doctrine.event_listener, event: prePersist }
使用更具体的实体侦听器(没有错误但根本没有启动):
namespace App\EventListener;
use App\Entity\Comment;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class CommentAuthorAssignmentListener
{
private $tokenStorage;
public function __construct(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
public function prePersist(Comment $comment, LifecycleEventArgs $event)
{
$comment->setAuthor($this->tokenStorage->getToken()->getUser());
}
}
services:
App\EventListener\CommentAuthorAssignmentListener:
autowire: true
tags:
- { name: doctrine.entity_listener , entity: 'App\Entity\Comment', event: prePersist }
一些注意事项:
- 我做到了运行
cache:clear
- 用例:显式持久化(新创建的)评论
看起来你打错了:
# these are the options required to define the entity listener
name: 'doctrine.orm.entity_listener'
event: 'postUpdate'
entity: 'App\Entity\User'
注意“.orm”。在标签名称中,因此对于您的用例:
services:
App\EventListener\CommentAuthorAssignmentListener:
autowire: true
tags:
- { name: doctrine.orm.entity_listener , entity: 'App\Entity\Comment', event: prePersist }