codfee/plugins-system

A Laravel and Lumen plugin system

dev-master 2019-05-24 06:47 UTC

This package is auto-updated.

Last update: 2024-04-08 03:56:31 UTC


README

Plugin system for Laravel 5.x and Lumen 5.x. Plugins can overwrite and extend each other.

Usage

For Lumen add to bootstrap/app.php: $app->register(\CodFee\LaravelPlugins\PluginServiceProvider::class);

For Laravel add to 'providers' array in config/app.php: \CodFee\LaravelPlugins\PluginServiceProvider::class,

Create a plugin

Structure

Plugins must be in app/Plugins. Example plugin structure:

  • Test
    • Http
      • Controllers
        • TestController.php
    • views
      • test.blade.php
    • migrations
      • 2018_06_15_000000_create_test_table.php
    • routes.php
    • TestPlugin.php

The TestPlugin class must extend the CodFee\LaravelPlugins\Plugin class, containing a unique $name property and a boot() method.

Views

In the boot() method of your plugin call $this->enableViews(). Optional you can pass a relative path to the views directory, default to views. Views automatically have a namespace ("plugin:{name}"), the name is defined by the the main plugin class in a camel case format, with Plugin stripped from the end. For the example above it would be plugin:test. To render a view you can either write the namespace yourself or use the helper method view() in the plugin class. For example view('plugin:test::some.view.name');

Routes

In the boot() method of your plugin call $this->enableRoutes(). Optional you can pass a relative path to the routes file, default to routes.php. You automatically have access to the $app variable. Routes are automatically grouped to your plugin namespace, so you only have to type the controller name without the namespace.

Controllers

Controllers must be in PluginDirectory->Http->Controllers.

Migrations

In the boot() method of your plugin call $this->enableMigrations(). Optional you can pass a relative path to the migrations directory, default to migrations. Keep in mind that migrations must follow the yyyy_mm_dd_tttt_<name>.php naming convention, for example 2014_10_12_000000_create_users_table.php would be a valid migration.

How to extend another plugin

ToDo

  • Move plugin directory and project namespace to publishable config file

plugins-system