slexx / laravel-blade-events
Blade 模板引擎的事件模型
v1.0.0
2019-02-07 22:34 UTC
Requires
- laravel/framework: ^5.7
This package is not auto-updated.
Last update: 2024-09-29 05:34:38 UTC
README
用法
基本用法
此包为 Blade 模板引擎提供了一个事件模型,添加了一个指令 @ event
。
index.blade.php
@event('unique-event-name');
我们可以在 app/Providers/EventServiceProvider.php
文件的 boot
方法中添加以下行来监听事件
use Slexx\LaravelBladeEvents\EventManager; // ... EventManager::listen('unique-event-name', function($event) { echo '<h1>Привет из подполья!</h1>'; });
结果将是
<h1>Привет из подполья!</h1>
断点
你可以使用多个监听器,并在某个点中断其他监听器
use Slexx\LaravelBladeEvents\EventManager; // ... EventManager::listen('unique-event-name', function($event) { echo 1; }); EventManager::listen('unique-event-name', function($event) { $event->stop(); echo 2; }); EventManager::listen('unique-event-name', function($event) { echo 3; });
结果
12
参数
在 @event
指令的帮助下,可以将无限数量的参数传递给事件监听器,它们可以通过 Event
类的 getArguments
方法访问
@event('unique-event-name', 'listener-first-argument', 'listener-two-argument');
EventManager::listen('unique-event-name', function($event) { dd($event->getArguments()); });
优先级
事件监听器可以指定优先级
EventManager::listen('unique-event-name', function($event) { echo 1; }); EventManager::listen('unique-event-name', function($event) { $event->stop(); echo 2; }); EventManager::listen('unique-event-name', function($event) { echo 3; }); // ... // Disable all event listeners EventManager::listen('unique-event-name', function($event) { $event->stop(); }, -100);
事件监听器
作为事件监听器,你可以指定函数的名称
EventManager::listen('some-event', 'someEventListener');
或类名
EventManager::listen('some-event', '\Foo\Bar\SomeEventListener@handle');
// Или так
EventManager::listen('some-event', ['\Foo\Bar\SomeEventListener', 'handle']);
事件名称
你可以通过符号 "|" 分隔事件名称来同时监听多个事件
EventManager::listen('package-one::some-event|package-two::some-event', '\Foo\Bar\SomeEventListener@handle');
或将名称列表作为数组传递
EventManager::listen(['package-one::some-event', 'package-two::some-event'], '\Foo\Bar\SomeEventListener@handle');
安装
你可以通过 composer 安装此包
composer require slexx/laravel-blade-events
更新 composer 后,将服务提供者添加到 config/app.php
文件中的 providers
数组中
Slexx\LaravelBladeEvents\EventsServiceProvider::class,