25

我想知道 Laravel 核心库触发了哪些事件。我想获得完整的列表,例如laravel.queryand laravel.done

官方文档中列出了四个事件,但我认为 Laravel 的事件比这四个还多!

4

4 回答 4

45

Laravel 实际上并没有像你想象的那样触发那么多的事件。虽然它确实使用了事件系统,但它可供开发人员在应用程序中使用。无论如何,这是我编制的清单。

laravel.done
laravel.log
laravel.query
laravel.resolving
laravel.composing: {viewname}
laravel.started: {bundlename}
laravel.controller.factory
laravel.config.loader
laravel.language.loader
laravel.view.loader
laravel.view.engine

view.filter

eloquent.saving
eloquent.updated
eloquent.created
eloquent.saved
eloquent.deleting
eloquent.deleted
eloquent.booted: {$model}
eloquent.booting: {$model}


500
404

500404都是与错误相关的事件。这些是在routes.php文件中设置的,因此您可以查看默认侦听器是什么。

我想指出,eloquent.{event}还有另一个包含正在更新的类名的变体。

eloquent.{event}: {classname}

我不会说这绝对是一切,但至少应该是 99%。

于 2012-10-25T05:47:16.570 回答
19

除了杰森刘易斯的回答,我还有一些要补充的。我只是搜索了fire()功能并为 Laravel 5 提供了以下列表,

$this->events->fire('auth.attempt', $payload);
$this->events->fire('auth.login', [$user, $remember]);
$this->events->fire('auth.logout', [$user]);
$this->events->fire('cache.'.$event, $payload);
$this->laravel['events']->fire('cache:clearing', [$storeName]);
$this->laravel['events']->fire('cache:cleared', [$storeName]);
$events->fire('artisan.start', [$this]);
$this->events->fire('illuminate.query', array($query, $bindings, $time, $this->getName()));
$this->events->fire('connection.'.$this->getName().'.'.$event, $this);
$this['events']->fire('bootstrapping: '.$bootstrapper, [$this]);
$this['events']->fire('bootstrapped: '.$bootstrapper, [$this]);
$this['events']->fire('locale.changed', array($locale));
$this['events']->fire($class = get_class($provider), array($provider));  //after provider registered.
$this->app['events']->fire('kernel.handled', [$request, $response]);
$this->dispatcher->fire('illuminate.log', compact('level', 'message', 'context'));
$this->events->fire('mailer.sending', array($message));
$this->events->fire('illuminate.queue.failed', array($connection, $job, $data));
$this->events->fire('illuminate.queue.stopping');
$this->events->fire('router.matched', [$route, $request]);
$this->events->fire('composing: '.$view->getName(), array($view));
$this->events->fire('creating: '.$view->getName(), array($view));
于 2015-04-20T08:27:29.870 回答
3

这里还有一些,倾倒时得到的static::$events

laravel.config.loader
laravel.view.loader
laravel.language.loader
laravel.view.engine
404

不确定是否覆盖这些会起作用,因为它们在内部被调用

于 2012-10-25T02:27:52.770 回答
3

如果您正在调试 Laravel 应用程序,您可以使用以下代码段在控制台中获取正在运行的进程的触发事件的完整列表(例如,当您运行单元测试或工匠命令时):

Event::listen('*', function ($event) {
    echo $event."\n";
});

如果您使用该logger函数,它将进入无限循环。

于 2020-09-07T10:41:37.223 回答