Laravel 事件没有触发?
Laravel events not firing?
我似乎无法将我的任何 eloquent.saved
事件处理程序获取到 运行。
我试过这个:
<?php
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
'eloquent.saved: \App\Models\Company' => [
'\App\Models\Company@hasSaved',
],
];
}
然后将此方法添加到\App\Models\Company
:
public function hasSaved() {
die("SAVED!!!");
}
但当我拯救一家公司时,它不会运行。
我尝试创建一个观察者:
<?php
namespace App\Providers;
use App\Models\Company;
use App\Observers\CompanyObserver;
use DB;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
Company::observe(CompanyObserver::class);
}
}
但事件从未触发:
<?php namespace App\Observers;
class CompanyObserver {
public function saved() {
die('saved');
}
public function saving() {
die('saving');
}
}
我尝试在 EventServiceProvider
中使用监听器 class:
protected $listen = [
'eloquent.saved: \App\Models\Company' => [
\App\Listeners\CompanySavedListener::class,
],
];
但那也永远不会 运行s。
最后,我尝试将其添加到 EventServiceProvider
public function boot(DispatcherContract $events)
{
parent::boot($events);
$events->listen('eloquent.*', function() {
dump(func_get_args());
});
}
这确实触发了一堆随机事件,但它只是为我提供模型实例——我不知道实际触发了什么事件。
所以这是怎么回事?我只想知道我的 Company
何时保存。
让我们采用观察者方式。问题是你使用了:
Company::observe(CompanyObserver::class);
在AppServiceProvider
的register
方法中,你应该在boot
方法中使用它。当您将此行移动到 boot
方法(相同 class)时,它将正常工作,并且当您保存公司时,应启动 CompanyObserver
的 saved
方法中的代码.
我似乎无法将我的任何 eloquent.saved
事件处理程序获取到 运行。
我试过这个:
<?php
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
'eloquent.saved: \App\Models\Company' => [
'\App\Models\Company@hasSaved',
],
];
}
然后将此方法添加到\App\Models\Company
:
public function hasSaved() {
die("SAVED!!!");
}
但当我拯救一家公司时,它不会运行。
我尝试创建一个观察者:
<?php
namespace App\Providers;
use App\Models\Company;
use App\Observers\CompanyObserver;
use DB;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
Company::observe(CompanyObserver::class);
}
}
但事件从未触发:
<?php namespace App\Observers;
class CompanyObserver {
public function saved() {
die('saved');
}
public function saving() {
die('saving');
}
}
我尝试在 EventServiceProvider
中使用监听器 class:
protected $listen = [
'eloquent.saved: \App\Models\Company' => [
\App\Listeners\CompanySavedListener::class,
],
];
但那也永远不会 运行s。
最后,我尝试将其添加到 EventServiceProvider
public function boot(DispatcherContract $events)
{
parent::boot($events);
$events->listen('eloquent.*', function() {
dump(func_get_args());
});
}
这确实触发了一堆随机事件,但它只是为我提供模型实例——我不知道实际触发了什么事件。
所以这是怎么回事?我只想知道我的 Company
何时保存。
让我们采用观察者方式。问题是你使用了:
Company::observe(CompanyObserver::class);
在AppServiceProvider
的register
方法中,你应该在boot
方法中使用它。当您将此行移动到 boot
方法(相同 class)时,它将正常工作,并且当您保存公司时,应启动 CompanyObserver
的 saved
方法中的代码.