Laravel 停止事件传播
Laravel stop events propagation
我已经在一个事件上注册了两个 queued 事件处理程序:
// in app/Providers/EventServiceProvider.php
//...
'App\Events\UserWasCreated' => [
'App\Handlers\Events\RegisterInSalesForce',
'App\Handlers\Events\SendMailToAdmin',
],
我想 运行 SendMailToAdmin
只有 RegisterInSalesForce
可以。我尝试 return false
in RegisterInSalesForce
失败, true
成功,但它不起作用。
我该怎么办?我错过了什么吗?
使用单独的事件处理程序并将逻辑添加到方法中,或者有另一个事件 "RegisteredInSalesForce" 因此它的侦听器将调度命令 "SendMailToAdmin"。
你不能完全那样做,但你可以做一个解决方法:
在您的 RegisterInSalesForce
事件中,您可以触发另一个事件(例如 RegisteredInSales
)然后收听它。
class RegisterInSalesForce {
public function handle()
{
// do your stuff
if($stuff == true){
$response = Event::fire(new RegisteredInSales);
}
}
}
在 Laravel 5.5 中,您可以 return false
停止传播事件。
来自 Laravel 5.5 文档
停止传播事件
https://laravel.com/docs/5.5/events#defining-listeners
Sometimes, you may wish to stop the propagation of an event to other listeners. You may do so by returning false
from your listener's handle method.
我已经在一个事件上注册了两个 queued 事件处理程序:
// in app/Providers/EventServiceProvider.php
//...
'App\Events\UserWasCreated' => [
'App\Handlers\Events\RegisterInSalesForce',
'App\Handlers\Events\SendMailToAdmin',
],
我想 运行 SendMailToAdmin
只有 RegisterInSalesForce
可以。我尝试 return false
in RegisterInSalesForce
失败, true
成功,但它不起作用。
我该怎么办?我错过了什么吗?
使用单独的事件处理程序并将逻辑添加到方法中,或者有另一个事件 "RegisteredInSalesForce" 因此它的侦听器将调度命令 "SendMailToAdmin"。
你不能完全那样做,但你可以做一个解决方法:
在您的 RegisterInSalesForce
事件中,您可以触发另一个事件(例如 RegisteredInSales
)然后收听它。
class RegisterInSalesForce {
public function handle()
{
// do your stuff
if($stuff == true){
$response = Event::fire(new RegisteredInSales);
}
}
}
在 Laravel 5.5 中,您可以 return false
停止传播事件。
来自 Laravel 5.5 文档
停止传播事件
https://laravel.com/docs/5.5/events#defining-listeners
Sometimes, you may wish to stop the propagation of an event to other listeners. You may do so by returning
false
from your listener's handle method.