簡體   English   中英

Laravel Octane 事件偵聽器未觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM