Concord Modules
Modules are decoupled components and are glued together by the application (or by a box). Technically they're a bunch of classes and files wired into the Laravel Application with their own dedicated Service Provider.
Modules can be situated in two ways:
- as external modules (separate composer packages)
- in-app modules (usually under
app/Modules/<ModuleName>
)
Technically there's no difference between the two.
Module Folder Structure
Minimum Fileset For A Concord Module
module-src/
Providers/
|-- ModuleServiceProvider.php
resources/
|-- manifest.php
Full Stack Of Recommended File/Folder Structure
module-src/
Contracts/
Events/
Exceptions/
Helpers/
Models/
|-- Factories/
Providers/
|-- ModuleServiceProvider.php
Services/
Tests/
|-- Feature
|-- Unit
resources/
|-- config/
|-- module.php
|-- database/
|-- migrations/
|-- seeds/
|-- manifest.php
Module Id
Concord automatically calculates the module id based on the module's namespace.
Examples:
Namespace | Module Id | Type |
---|---|---|
App\Modules\Billing | billing | in-app |
App\Modules\Analytics | analytics | in-app |
App\Modules\ClientHistory | client_history | in-app |
Vendor\Module\Providers\ModuleServiceProvider | vendor.module | external |
Vanilo\Cart\Providers\ModuleServiceProvider | vanilo.cart | external |
Vanilo\Order\Providers\ModuleServiceProvider | vanilo.order | external |
Konekt\Acl\Providers\ModuleServiceProvider | konekt.acl | external |
Retrieve Modules From Concord By ID:
Using the facade:
use Konekt\Concord\Facades\Concord;
$cartModule = Concord::module('vanilo.cart');
Using the service from the container:
$billingModule = app('concord')->module('billing');
// or if you have an app instance available:
$billingModule = $this->app['concord']->module('billing');
Next: Creating Modules »