我以前使用过事件和侦听器,但是现在我尝试使用事件和侦听器,但是该事件并未将侦听器视为下面的代码
事件
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class teste
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public function __construct()
{
}
public function broadcastOn()
{
return [new PrivateChannel('channel-name')];
}
}
它是事件的侦听器
<?php
namespace App\Listeners;
use App\Events\teste;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class testl
{
public function __construct()
{
//
}
public function handle(teste $event)
{
return true;
}
}
和eventProviderService
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
// Registered::class => [
// SendEmailVerificationNotification::class,
// ],
'App\Events\teste' => [
'App\Listeners\testl'
],
];
调用该事件的代码是
Route::get("test100" , function(){
$Event = event(new \App\Events\teste());
dd($Event);
});
毕竟,当我使用函数dd()来检查输出时,没有任何输出,这没什么,它是空数组,不包含null或任何东西 当我在侦听器中使用函数dd()检查事件是否看到侦听器或否时,结果为
答案 0 :(得分:0)
为使Event
和Listener
起作用,您需要映射哪些Listner
响应给定的Event
。在Laravel中,这是在EventServiceProvider
以下示例摘自Laravel documentation:
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification',
],
];
任意数量的Listener
都可以对给定的Event
做出反应
编辑:此外,请确保名称间隔对您的应用程序是正确的
答案 1 :(得分:0)
我已经通过从目录引导程序中删除现金文件并运行composer install来解决了问题