如何通过ajax调用触发模型观察者?

时间:2019-06-11 17:42:54

标签: laravel laravel-5.7

我已经根据Laravel docs

创建了一个模型观察器

在我的UserObserver.php目录中成功创建了Observers文件的地方。

在我的created方法中,要测试一切是否正常,我只是登录到[debugbar](

public function created(User $user)
{
    Debugbar::info('User created!');
}

我正在使用ajax调用来创建用户-成功创建用户后,在调试栏的消息标签中看不到任何显示内容。

我已经在我的AppServiceProvider文件中注册了观察者:

public function boot()
{
    User::observe(UserObserver::class);
}

我还尝试将其放入我的User模型中:

protected $dispatchesEvents = [
    'created' => UserObserver::class,
    'deleted' => UserObserver::class,
];

仍然没有运气。

因为请求是ajax,是否有其他方法可以尝试? 谢谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

感谢Bryan和Aken-非常感谢您花费的时间帮助您。

这就是我最后的希望,希望对别人有帮助。

User.php(型号)

/**
 * The event map for the model.
 *
 * @var array
 */
protected $dispatchesEvents = [
    'created' => UserCreated::class,
];

...

然后,通过the documentation生成我创建(创建的系统)Users目录的事件/侦听器。其中有一个名为UserCreated.php

的文件

EventServiceProvider.php

/**
 * The event listener mappings for the application.
 *
 * @var array
 */
protected $listen = [
    Registered::class => [
        SendEmailVerificationNotification::class,
    ],
    UserCreated::class => [
        CreateDefaultReportConfiguration::class,
      ],
    ];
], 

从那里创建一个Listeners目录,其中包含一个名为CreateDefaultReportConfiguration.php

的文件。
...

/**
 * Handle the event.
 *
 * @param  UserCreated $event
 * @return void
 */
public function handle(UserCreated $event)
{
    Log::info('UserCreated Listener');
}

现在在我的/storage/logs/目录中:

local.INFO: UserCreated Listener