我每次注册新用户时都会尝试触发事件。为此,在我的 EventServiceProvider 中添加了
protected $listen = [
'App\Events\UserRegistered' => [
'App\Listeners\UserRegisteredListener',
],
];
然后跑
php artisan event:generate
为我创建了一个事件 UserRegistered 和一个侦听器 UserRegisteredListener 。在我的UserRegistered我有
public function __construct(User $user)
{
$this->user = $user;
}
我的UserRegisteredListener
public function handle(UserRegistered $event)
{
$user = $event->user;
$user->cart()->save(new Cart);
$user->wallet()->save(new Wallet);
}
我从我的AuthController特征 RegistersUsers
中解雇了该事件public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::guard($this->getGuard())->login($this->create($request->all()));
Event::fire(new UserRegistered(Auth::user()));
return redirect($this->redirectPath());
}
逻辑在localhost上完全正常,但是当我将它推送到 正在运行EC2 amazon linux实例的prod服务器 事件根本没有被解雇。
答案 0 :(得分:0)
该事件是从 RegistersUsers.php 触发的,它是Vendor文件夹(gitignore)的一部分。哪个在本地可用,但在prod的 RegistersUsers.php 上没有。
将事件触发器移动到AuthController