Package Data | |
---|---|
Maintainer Username: | mnabialek |
Maintainer Contact: | developer@nabialek.org (Marcin Nabiałek) |
Package Create Date: | 2016-01-03 |
Package Last Update: | 2017-01-24 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-14 03:00:16 |
Package Statistics | |
---|---|
Total Downloads: | 708 |
Monthly Downloads: | 2 |
Daily Downloads: | 0 |
Total Stars: | 21 |
Total Watchers: | 6 |
Total Forks: | 4 |
Total Open Issues: | 0 |
This module makes managing your Laravel 5 application much more easier. No more putting dozens or hundreds of files into single directory.
Now you can create for your Laravel 5 application multiple modules and each of them will have its own structure (in the way you decide).
To install in Laravel 5.3+ use this branch, however to install in Laravel < 5.3 please refer to version 0.1.
For Laravel 5.3+ run
composer require mnabialek/laravel-modular 0.2.*
in console to install this module.
Open config/app.php
and:
Add
Mnabialek\LaravelModular\Providers\ModularServiceProvider::class,
in same section (providers
)
Add
'Modular' => Mnabialek\LaravelModular\Facades\Modular::class,
into aliases
section
Run
php artisan vendor:publish --provider="Mnabialek\LaravelModular\Providers\ModularServiceProvider"
in your console to publish default configuration files, sample app files (published in app/Core
) and sample stubs files
In default seeder database/seeds/DatabaseSeeder
at the end of run
method add:
Modular::seed($this);
In app/Providers/RouteServiceProvider.php
at the end of map
function add
\Modular::loadRoutes($this->app['router'], 'web');
\Modular::loadRoutes($this->app['router'], 'api');
In database/factories/ModelFactory.php
(this step applies only to Laravel 5.1+) add at the end of file:
Modular::loadFactories($factory);
To get started run:
php artisan module:make TestModule
This command will create your TestModule
module structure. Open directory and look at its structure.
As you see some files uses app/Core
abstract classes (those file where created during installation).
First decide, whether you want to use app/Core
files or not. If not, you can remove this directory. Go to resources/stubs/modular
and look at
sample stubs. You can now alter them depending on your needs (you can remove all usages of app/Core
files`, create new stubs etc.
Now open config/modular.php
file, go to stubs_groups
section and adjust default
structure - you can specify here what directories
and files
should be created for default modules. When you finish, run:
php artisan module:make TestModule2
Now this new module will be created according to your needs. Great - you created your first module as you wanted!
This module is highly customizable. The concept is based on using group stubs and in each group you can define which directories should be created and which files should be created (you can omit directories if you want when in those directories you want to place files - they will be automatically created).
You can create multiple stubs groups, you can configure many things. Just go to config/modular.php
and look at sample settings and comments in this file - if you want to change them, just do it, generate new sample module (or files) and see what will happen.
For all stubs groups the following replacements will be done for filename and file content (assuming you haven't changed default {
and }
separators to custom ones):
{module}
- this will be changed into module name{class}
- this will be changed into used name of module/submodule/file{moduleNamespace}
- this will be changed into module namespace{namespace}
- this will be changed into main namespace of modules directory{plural|lower}
- this will be changed into plural name of module (lowercase)By default for each module you can load 2 routing files - web.php
and api.php
if you followed installation instructions. However, you might also decide to use single routing file for each module. In this case use
\Modular::loadRoutes($this->app['router']);
only in step 5 of installation.
You can also decide to put the whole routing files in groups as defaults in Laravel 5.3. In this case you can do it also in RouteServiceProvider
- in such case please remember to alter your routes stubs to not apply same middleware twice because it will cause unexpected issues in your Laravel application.
This command creates new modules. You can create one module or multiple modules at once.
Example usage:
php artisan module:make Product Order
You can control what is created when running this command in config/modular.php
in stubs_groups
section. You can pass optional stub group name using --group=test
in case you want to use multiple types of modules.
Allow to create files in module that already exists.
Example usage:
php artisan module:make Product Camera Radio
You can control what is created when running this command in config/simplemodules.php
in stubs_groups
section. You can pass optional stub group name using --group=test
.
By default it creates "submodule" in existing module.
Creates migration file in given module
Example usage:
php artisan module:make-migration Product create_products_table
You can also use optional --type
and --table
options to set table and type of migration (you can of course create own types if you want) in order to create migration with template for given type, for example:
php artisan module:make-migration Product create_camera_table --table=cameras --type=create
it will create migration that is of type create
- so in up
method there will be creating cameras
table and in down
method deleting cameras
table
Runs main seeder for given modules. You need to remember that only main seeder will be launched. In case you have multiple seeders in single module, you should manually run extra seeders in main module seeder.
Example usage:
php artisan module:seed Product Order
This module register modules paths so when you run default Laravel migrate
command all migrations will be run (both general and for all active modules)
Example usage:
php artisan migrate
If you done all steps in Installation
section when you run db:seed
command all main seeds from active modules will be run
Example usage:
php artisan db:seed
By default (you can customize it in config file), all modules are created with 2 options - active
and routes
- by default they are both set to true
. The general rule for all modules options is like this - if option is set for module in configuration file, it will be used, otherwise some extra checks will be made to calculate. It does not apply to active
option - in case it's missing it's assumed to be true
.
Available options for modules:
active
- whether module is activeprovider
- whether module has service providerfactory
- whether module has model factoryroutes
- whether module has routes.php
fileseeder
- whether module has seeder fileIn addition to use custom routing files, you can use also additional settings:
api_routes
- whether module has api.php
routing fileweb_routes
- whether module has web.php
routing filePrefix of option should match the name of routing file, if you would like additional extra.php
routing file, you could use extra_routes
option.
Be aware in case option set in configuration file won't be valid, some unexpected situations might happen. For example, if you set provider
to false
but later you will add service provider to module, it won't he loaded unless you change provider
option to true
or you remove it completely from configuration file for this module.
Please refer to Changelog
This package is licenced under the MIT license