megaads-vn / clara-app-store by megaads-vn

Module management in Laravel
194
0
7
Package Data
Maintainer Username: megaads-vn
Maintainer Contact: info@megaads.vn (megaads-vn)
Package Create Date: 2019-09-25
Package Last Update: 2021-05-15
Language: PHP
License: MIT
Last Refreshed: 2024-03-25 03:06:11
Package Statistics
Total Downloads: 194
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 0
Total Watchers: 7
Total Forks: 0
Total Open Issues: 0

Clara

A module management in Laravel

System requirements

  • PHP: >=5.6
  • Laravel Framework: >=5.4

Installation

Clara is packed as a composer package. So it can be installed quickly:

  1. Require the composer package

    composer require megaads/clara

  2. Register the provider:

    Megaads\Clara\Providers\ModuleServiceProvider

  3. Register the facade:

    Megaads\Clara\Facades\ModuleFacade

  4. Autoloading

By default the module classes are not loaded automatically. You can autoload your modules in composer.json

{
    "autoload": {
        "psr-4": {            
            "App\\": "app/",
            "Modules\\": "app/Modules"            
        }
    },
    "extra": {
        "merge-plugin": {
            "include": [
                "app/Modules/*/module.json"
            ]
        }
    }
}

Module Management

Create module

php artisan module:make <ModuleName> ...

Folder structure

app
│
└───Modules
    
    └───ModuleName
        │
        └───Config
        │      app.php
        │
        └───Controllers
        │      Controller.php
        │      ...
        │
        └───Helpers
        │      helper.php
        │      ...
        │
        └───Middlewares
        │      ExampleMiddleware.php
        │      ...
        │
        └───Models
        │      ...
        │
        └───Resources
        │      Views
        │      Assets
        │      ...
        │
        └───Routes
        │      routes.php
        │      ...
        │
        └───Kernel.php
        │
        └───module.json
        │
        └───start.php
  • module.json: the module configuration file is based on composer composer.json. All configurations in the module.json will be merged to main composer.json.
  • start.php: the module's start file that will be loaded every requests. So module actions, module views... can be registered in this file.

Download and install module from an URL

php artisan module:download <ZipFileURL> ...

Enable module

php artisan module:enable <ModuleName> ...

Disable module

php artisan module:disable <ModuleName> ...

Remove module

php artisan module:remove <ModuleName> ...

Remove all modules

php artisan module:remove-all

Module Action

Fire a action

Using PHP

Module::action('action_name', [params]);

Using blade statement

@action('action_name', [params])

Handle a action

Module::onAction('action_name', function ($params) {  
      
}, PRIORITY);

Handle a action using a controller

Module::onAction('action_name', 'Modules\Example\Controllers\HomeController@action', PRIORITY);

By default, Clara supplies actions:

  • module_made
  • module_loaded
  • module_disabled
  • module_enabled
  • module_removed
  • module_removed_all

Module View

Register a view

Using PHP

Module::view('view_name', [params], IS_MULTI_LAYER);
Module::view('view_name', 'This is a view placeholder', IS_MULTI_LAYER);

Using blade statement

@view('view_name', [params])

Handle a view

Module::onView('view_name', function ($params) {  
    return view('module-namespace:home.index');
}, PRIORITY);

Handle a view using a controller

Module::onView('view_name', 'Modules\Example\Controllers\HomeController@index', PRIORITY);

Module Methods

Get all modules

$modules = Module::all();

Get the current module

$module = Module::this();

Get module options

$option = Module::option('option.name');

Set module option

$option = Module::option('option.name', 'option.value');

License

The Clara is open-sourced software licensed under the MIT license

Contact us/ Instant feedback

Email: info@megaads.vn

If you find a bug, please report it here on Github