slexx/laravel-blade-events

Blade 模板引擎的事件模型

v1.0.0 2019-02-07 22:34 UTC

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,