Laravel Module Manager
Introduction
When you work on small project, you will feel laravel default structure
is enough. When your project grows up, you will think to divide
your app into modules where each module will contain all of it resources
such as Controllers, Models, Views, Migrations, Config etc. This laravel-module-manager
package will help you to manage laravel modular application easily., (*1)
Installation
-
laravel 5.4 or 5.5, (*2)
composer require mrabbani/laravel-module-manager, (*3)
-
Laravel 5.3, Add the following line to your composer.json
file and run composer install
in your terminal., (*4)
"mrabbani/laravel-module-manager": "^1.4", (*5)
If you are using Laravel<5.5 you have to add module manager service provider to config/app.php
file, (*6)
Mrabbani\ModuleManager\Providers\ModuleProvider::class,
, (*7)
To create new module run the bellow command:, (*8)
php artisan module:create name-of-your-module
php artisan module:install {module_alias_name}
Folder Structure
If your module name is module1
the module structure will be, (*9)
, (*10)
Configuration
By default, all of your module will be placed inside modules
directory
into your application's base directory. If you want to change publish
module_manager
config file by, (*11)
php artisan vendor:publish
, (*12)
Now you can change the default modules directory by changing
module_directory
value of config/module_manager.php
file., (*13)
Available Commands
To see all module related commands run php artisan
into terminal.
Available commands are:, (*14)
php artisan module:create {alias}
php artisan module:make:controller {alias} {ControllerName}
php artisan module:make:controller {alias} {ControllerName} --resource
php artisan module:make:command {alias} {CommandName}
php artisan module:make:facade {alias} {FacadeName}
php artisan module:make:middleware {alias} {MiddlewareName}
php artisan module:make:migration {alias} {migration_name} --create --table=table_name
php artisan module:make:migration {alias} {migration_name} --table=table_name
php artisan module:make:model {alias} {ModelName}
php artisan module:make:provider {alias} {ProviderName}
php artisan module:make:request {alias} {RequestName}
php artisan module:make:service {alias} {ServiceClassName}
php artisan module:make:support {alias} {SupportClassName}
php artisan module:make:seeder {alias} {SeederClassName}
-
php artisan module:db:seed {alias}
php artisan module:db:seed {alias} --class={SeederClassName}
php artisan module:migrate {alias}
php artisan module:migrate:rollback {alias}
php artisan module:routes
php artisan module:install {alias}
php artisan module:uninstall {alias}
php artisan module:enable {alias}
php artisan module:disable {alias}
'alias' is your module's alias name. you can find module's alias name in module.json
file of module directory, (*15)
You must install your module to activate, (*16)
php artisan module:install {alias}
, (*17)
Loading Component
You have to load views, config and translation by following laravel package, (*18)
Loading View
view(module_alias::view_file)
you may load the module1 module's index.blade.php
view like so:, (*19)
view('module1::index');
Loading Translation
you may load the module1 module's welcome
line from the messages
file like so:, (*20)
trans('module1::messages.welcome');
Loading Config File
you may load the module1 module's welcome
line from the messages
file like so:, (*21)
config('messages.welcome');
, (*22)
You have to merge the configurations, use the mergeConfigFrom
method within your ModuleServiceProvider
provider's register
method:, (*23)
public function register()
{
$this->mergeConfigFrom(
__DIR__.'/../../config/messages.php', 'messages'
);
}
Register Middleware
You should create a MiddlewareServiceProvider
provider to register your middleware dynamically., (*24)
```, (*25)
use Illuminate\Support\ServiceProvider;, (*26)
class MiddlewareServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
/**
* @var Router $router
*/
$router = $this->app['router'];, (*27)
$router->aliasMiddleware('middleware-shortname', MiddlewareClassName::class);
}
}
```, (*28)
You should register all of your module's custom provider in ModuleServiceProvider provider's register method instead application's config/app.php file., (*29)
Credit
WebEd, (*30)