[英]Laravel Octane Event Listener not firing
我正在使用 laravel sail 在 swoole 上運行 laravel octane。
我對我的 EventServiceProvider 進行了更改:
<?php
namespace App\Providers;
use App\Events\SubscriptionCreated;
use App\Listeners\CreateUserTeam;
use App\Listeners\SendSubscriptionReceipt;
use App\Listeners\UpdateTeamFeatures;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
CreateUserTeam::class
],
SubscriptionCreated::class => [
SendSubscriptionReceipt::class,
UpdateTeamFeatures::class
]
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
\Log::debug("HERE", $this->listen);
}
}
這是我的聽眾:
<?php
namespace App\Listeners;
use App\Models\Team;
use Illuminate\Auth\Events\Registered;
class CreateUserTeam
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
\Log::debug("HIT");
}
/**
* Handle the event.
*
* @param Registered $event
* @return void
*/
public function handle(Registered $event)
{
$user = $event->user;
$team = Team::create([
'manager_id' => $user->id,
]);
$team->createAsStripeCustomer();
$user->update(['team_id' => $team->id]);
}
}
無論我嘗試什么,這個事件監聽器都沒有被解雇。 我試過清除緩存、composer dump-autoload、php artisan optimize、重新加載 octane、停止 octane 並重新啟動它。 甚至停止 docker 容器並重新啟動它們。 什么都不管用。
它記錄偵聽器列表(包括 CreateUserTeam 偵聽器),它會觸發 Email 通知,但不會觸發其他偵聽器。
如果有人有任何見解......請。 我無計可施
我和你創造了同樣的情況,
像你一樣添加了我的聽眾:
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
TestListener::class,
],
];
使用 Laravel 的注冊測試:
<?php
namespace Tests\Feature\Auth;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class RegistrationTest extends TestCase
{
use RefreshDatabase;
public function test_registration_screen_can_be_rendered()
{
$response = $this->get('/register');
$response->assertStatus(200);
}
public function test_new_users_can_register()
{
$response = $this->post('/register', [
'name' => 'Test User',
'email' => 'test@example.com',
'password' => 'password',
'password_confirmation' => 'password',
]);
$this->assertAuthenticated();
$response->assertRedirect(RouteServiceProvider::HOME);
}
}
這是我的測試聽眾
<?php
namespace App\Listeners;
use Illuminate\Auth\Events\Registered;
class TestListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
\Log::debug("HIT");
dump("test");
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle(Registered $event)
{
$user = $event->user;
dump($user->id);
}
}
並在帆內運行我的測試:
如您所見,它在 TestListener.php 中運行句柄 function
您可以刪除句柄 function 中的其他代碼部分並嘗試這樣嗎? 我想你的代碼可能有一些錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.