gpt4 book ai didi

php - Laravel/Lumen 事件监听器不监听

转载 作者:行者123 更新时间:2023-12-04 14:30:24 25 4
gpt4 key购买 nike

我有一个 Lumen Controller 类,它在创建用户时触发一个事件。我正在使用事件调度程序。事件按原样被触发,但监听器不处理该事件。
我确信我已经遵循了 Lumen 文档的每一步。

// UserController.php
class UserController extends ApiController
{
protected $event = null;

public function __construct(Dispatcher $event)
{
$this->event = $event;
}

/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$this->acceptContentType($request, 'json');

$this->input = $request->json()->all();
$this->withEncryptedParameters();

$this->validateParameterNames(array_keys($this->validationRules));
$this->validateParameterContent($this->validationRules);

$roles = $this->getRelationInput('roles');

$user = User::create($this->input);
$this->addRelation($user, $roles, Role::class, 'roles');

$this->event->fire(new UserCreated($user));

return $this->respondCreated($user->id);
}
}

所以我基本上想将用户存储到数据库中并在发生这种情况时触发一个事件。
// UserCreated.php
class UserCreated extends Event
{
public $user;

public function __construct(User $user)
{
$this->user = $user;
}
}

该事件被正确触发,因此如果我将“echo”或“var_dump”放入事件的构造函数中,我可以看到它有效。如果我对听众如此相同,它就不会使用react。
// UserCreatedEmail.php
class UserCreatedEmail extends Listener
{
public function handle(UserCreated $event)
{
echo 'Hello?';
}
}

我已经在 EventServiceProvider 中注册了它。
// EventServiceProvider.php
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
UserCreated::class => [
UserCreatedEmail::class
]
];
}

并在引导区取消注释它。
// bootstrap/app.php    
$app->register(WISSIT\UserService\Providers\EventServiceProvider::class);

我完全不知道为什么不起作用。我可以使用“$event->listen”但是当我使用测试时它也会监听。根据 Lumen 文档,它也应该在没有它的情况下工作。

是的,命名空间设置正确。不,我不想使用 Facades。

最佳答案

在 bootstrap/app.php 中的“注册服务提供者”下,注释掉服务提供者的注册。

// $app->register(App\Providers\EventServiceProvider::class);

进入
$app->register(App\Providers\EventServiceProvider::class);

关于php - Laravel/Lumen 事件监听器不监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33752633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com