Php symfony 5-未调度事件

Php symfony 5-未调度事件,php,autowired,symfony5,symfony-eventdispatcher,Php,Autowired,Symfony5,Symfony Eventdispatcher,提交订单时,我使用事件订阅服务器处理一些操作 问题我的事件没有被dispached,但symfony能够找到他,因为他告诉我我的OrderEvent::ORDER\u CREATE是孤立的 我预料到执行会随着die('Hello you from subscriber')而停止但它不是 控制器 public function commanderPanierAction(请求$Request,选择Web$SelectionWeb,TableLumineuse$TableLumineuse,事件分派

提交订单时,我使用事件订阅服务器处理一些操作

问题我的事件没有被dispached,但symfony能够找到他,因为他告诉我我的OrderEvent::ORDER\u CREATE是孤立的

我预料到执行会随着
die('Hello you from subscriber')而停止但它不是

控制器

public function commanderPanierAction(请求$Request,选择Web$SelectionWeb,TableLumineuse$TableLumineuse,事件分派器接口$eventDispatcher)
{
//做以前的事
$Order=新订单();
$OrderForm=$this->createForm(OrderForm::class,$Order);
如果($request->isMethod('POST')){
$OrderForm->handleRequest($request);
如果($OrderForm->isSubmitted()&&&$OrderForm->isValid()){
//订单有效,请继续
$eventDispatcher->dispatch(
新OrderEvent($Order),
OrderEvent::ORDER\u创建
);
}
} 
订单事件


Symfony将自动连接您的订户作为服务,如果您需要它作为操作参数:

public function commanderPanierAction(Request $request, SelectionWeb $selectionWeb, TableLumineuse $tableLumineuse, OrderSubscriber $orderSubscriber)
当然,如果您的订户注册正确

但我建议您不要手动将订阅者创建为对象。订阅者的主要好处是,当您触发事件时,您对它们一无所知。此事件可能有几十个订阅者,并且所有订阅者都将继续您的事件。这将保持代码良好,降低内聚性


它在文档中:

首先,我想感谢大家花了这么多时间,让我向大家道歉,我的问题是因为我写了一个打字错误,我写的是
orderssubscriber
,而不是
OrderSubscriber
,这就是为什么我的容器中有两个服务,以及为什么定义的服务显式工作。

所以正确的方法是要求订阅方作为参数不起作用?如果您确实想创建订阅服务器的实例,那么是的。但我强烈建议您不要在触发事件的地方触碰订阅服务器。我阅读了文档并遵循了它,我应该如何使用dispatcher中的addSubscriber而不使用Instanceate对象?我不想最终创建一个实例,我只是看看获取使用事件的最佳方法。如果您有一些建议来实现我的目的并保持代码干净,我们将不胜感激。您不需要手动添加订阅服务器。只要在getSubscribedEvents()中定义了事件,它就会捕获您的事件在subscriber的类中。它是神奇地自动进行的。除非我没有发现我评论的东西,
$dispatcher->addSubscriber($subscriber);
,我的事件不会触发。。