我在哪里可以获得 Laravel 事件的完整列表(由核心库触发)?
Posted
技术标签:
【中文标题】我在哪里可以获得 Laravel 事件的完整列表(由核心库触发)?【英文标题】:Where can I get a complete list of Laravel events (fired by the core libraries)? 【发布时间】:2012-10-15 02:45:02 【问题描述】:我想知道 Laravel 核心库触发了哪些事件。我想得到完整的列表,比如laravel.query
和laravel.done
。
the official docs 列出了四个事件,但我认为 Laravel 的事件比这四个还多!
【问题讨论】:
【参考方案1】: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
500
和 404
都是与错误相关的事件。这些是在routes.php
文件中设置的,因此您可以查看默认侦听器是什么。
我想指出,eloquent.event
有另一个包含正在更新的类名的变体。
eloquent.event: classname
我不会说这绝对是一切,但至少应该是 99%。
【讨论】:
值得注意的是,从 5.4 开始,上述部分内容已被重命名或删除。我一直在寻找与laravel.done
事件类似的东西,但很难找到任何文档。我建议使用*
监听所有事件并记录传入的事件调度程序实例以了解可用的内容。【参考方案2】:
除了 Jason Lewis 的回答,我还有一些要补充的。我只是搜索了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));
【讨论】:
Illuminate\Mail\Events\MessageSending【参考方案3】:这里还有一些,在倾销时得到的static::$events
laravel.config.loader
laravel.view.loader
laravel.language.loader
laravel.view.engine
404
不确定是否可以覆盖它们,因为它们是内部调用的
【讨论】:
您实际上可以监听这些并定义您自己的自定义加载器。如果您想要一个用于配置/视图/语言文件的级联加载系统,这非常棒。我偶尔会这样做。【参考方案4】:如果您正在调试 Laravel 应用程序,您可以使用以下 sn-p 在控制台中获取正在运行的进程的触发事件的完整列表(例如,当您运行单元测试或工匠命令时):
Event::listen('*', function ($event)
echo $event."\n";
);
如果您使用logger
函数,它将进入无限循环。
【讨论】:
以上是关于我在哪里可以获得 Laravel 事件的完整列表(由核心库触发)?的主要内容,如果未能解决你的问题,请参考以下文章
当我在 Laravel livewire 上单击事件时获得 404 模态
我在哪里可以获得 qt 默认 plastique qss 文件?