trk/processwire-event-loader

ProcessWire CMS/CMF 的事件加载模块,由 ALTI VE BIR 提供。

安装: 0

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:pw-module

dev-main 2023-01-04 23:36 UTC

This package is auto-updated.

Last update: 2024-09-05 03:22:05 UTC


README

EventLoader 模块允许您从事件文件中加载事件。

要求

  • ProcessWire 3.0 或更高版本
  • PHP 7.0 或更高版本

安装

模块目录安装模块

通过 Composer

composer require trk/processwire-event-loader

通过 git clone

cd your-processwire-project-folder/
cd site/modules/
git clone https://github.com/trk/EventLoader.git
  • 模块将检查以下文件夹以查找事件
/site/templates/events
/site/templates/configs/events
/site/modules/*/events
/site/modules/*/configs/events
  • site/ready.php 文件加载事件
<?php namespace ProcessWire;

if(!defined("PROCESSWIRE")) die();

EventLoader::load(__DIR__ . '/templates', 'ready.');
  • 事件文件:site/templates/configs/events/ready.hello-world.php
<?php

namespace ProcessWire;

class HelloController
{
    public function greeting()
    {
        echo 'Hello World !';
        exit;
    }
}

return [
    // 'run' => true, // Also you can pass run option for this file
    'events' => [

        '/hello-world' => [HelloController::class, 'greeting'],

        'Page::private' => [
            'run' => wire()->user->isLoggedin()
            'type' => 'method',
            'fn' => function (HookEvent $e) {
                $e->return = 'This will run, if user logged in';
            }
        ],

        'Page::hello' => [
            'type' => 'method',
            'fn' => function (HookEvent $e) {
                $message = is_string($e->arguments(0)) ? $e->arguments(0) : '';
                $e->return = $message;
            }
        ]
        
    ]
];
  • 用法
<?php
echo $page->hello('World');