trk/processwire-event-loader

Event Loader module for ProcessWire CMS/CMF by ALTI VE BIR.

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

This package is auto-updated.

Last update: 2024-04-05 02:29:04 UTC


README

EventLoader module allow you to load events from a event files.

Requirements

  • ProcessWire 3.0 or newer
  • PHP 7.0 or newer

Installation

Install the module from the modules directory:

Via Composer:

composer require trk/processwire-event-loader

Via git clone:

cd your-processwire-project-folder/
cd site/modules/
git clone https://github.com/trk/EventLoader.git
  • Module will check below folders for events:
/site/templates/events
/site/templates/configs/events
/site/modules/*/events
/site/modules/*/configs/events
  • Loading events from site/ready.php file
<?php namespace ProcessWire;

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

EventLoader::load(__DIR__ . '/templates', 'ready.');
  • Event file: 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;
            }
        ]
        
    ]
];
  • Usage
<?php
echo $page->hello('World');