【问题标题】:Unable to find observer in Laravel在 Laravel 中找不到观察者
【发布时间】:2021-09-22 07:40:50
【问题描述】:

我尝试在AppServiceProvider 中注册我的ObserverHelper,如下所示,但出现以下错误。

无法找到观察者:App\Helpers\App\Observers\FileLogObserver

AppServiceProvider.php

use Illuminate\Support\ServiceProvider;
use App\Helpers\ObserverHelper;

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
    }

    public function boot()
    {
        ObserverHelper::register();
    }
}

ObserverHelper.php

namespace App\Helpers;

class ObserverHelper
{
    protected static $observers = [
        'App\Models\FileLogs' => App\Observers\FileLogObserver::class,
    ];

    public static function register()
    {
        foreach (self::$observers as $model => $observer) {
            $model::observe($observer);
        }
    }
}

【问题讨论】:

  • 您有错字,请在App\Observers\FileLogObserver::class 之前添加\ 或在文件开头使用use App\Observers\FileLogObserver;

标签: laravel laravel-8 helper observer-pattern observers


【解决方案1】:

尝试在App\Observers\FileLogObserver::class 前面添加\(引用全局命名空间的反斜杠),或导入该类。

带反斜杠(引用全局命名空间):

<?php

namespace App\Helpers;

class ObserverHelper
{
    protected static $observers = [
        'App\Models\FileLogs' => \App\Observers\FileLogObserver::class,
    ];

    public static function register()
    {
        foreach(self::$observers as $model => $observer) {
            $model::observe($observer);
        }
    }
}

或导入:

<?php

namespace App\Helpers;

use App\Observers\FileLogObserver;

class ObserverHelper
{
    protected static $observers = [
        'App\Models\FileLogs' => FileLogObserver::class,
    ];

    public static function register()
    {
        foreach(self::$observers as $model => $observer) {
            $model::observe($observer);
        }
    }
}

注意:即使您的代码是有效的解决方案,也请考虑创建一个单独的提供程序来定义观察者(例如ObserverServiceProvider)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2019-04-17
    • 1970-01-01
    相关资源
    最近更新 更多