Laravel Maker is a tool to kick start project development and help with prototyping by creating scaffolding from YAML based definitions.
There are some amazing and highly complex CRUD and Admin resource_types but the aim of this is to create an opinionated scaffolding builder without many options but that is easy to hack and modify.
The package is designed to read from a yaml file (or files) that define the migrations, class names, labels etc.
The package is also capable of reading from an existing database table to so that crud can be created for that.
Laravel 5.5+
This package reads a yaml file and then creates the following resources:
- Public facing controller
- Admin controller
- Update request
- Store request
- Model
- Model Repository
- Migration
- Model factory
- Routes
- Public view templates
- Admin view templates
The yaml files are defined in /database/models
Contains the Artisan commands
This directory mirrors the structure of Laravel and is setup to use Request and Repository classes.
These files will processed and placeholders replaced in order to generate the scaffolding files.
Stubs can be overloaded on a individual basis based on a path defined in config
This also mirrors the structure of Laravel.
e.g. BaseController, BaseModel
These files will be published as is.
__MODEL.NAME__
The name of the model class e.g. Post
__VIEW.RESOURCE.DIRECTORY__
e.g. posts
__VIEW.NAMESPACE.DIRECTORY__
e.g. admin
__ROUTE.PATH__
The Admin route in dot format e.g. posts
__ROUTE.AS__
The route prefix defined as 'as' in the route group variable e.g. admin
__MODEL.NAME.HUMAN__
The singular friendly name of the model e.g. post
__MODEL.NAME.HUMAN.PLURAL__
The plural friendly name of the model e.g. posts
__MODEL.VAR.NAME__
The singular variable name of the model e.g. post
__MODEL.VAR.NAME.PLURAL__
The plural variable name of the model e.g. posts
-
Setup a Laravel site as normal...
-
laravel new t6.example.com
-
php artisan key:generate
-
Edit
.env
-
php artisan migrate
-
php artisan make:auth
-
Create and cd into
/packages/AbCreative
directory -
git clone https://github.com/ab-creative/laravel-maker.git
-
Edit /composer.json to add the package:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/",
"AbCreative\\LaravelMaker\\": "packages/AbCreative/laravel-maker/src"
}
},
- Add the package to
config/app.php
providers:
/*
* Package Service Providers...
*/
AbCreative\LaravelMaker\LaravelMakerServiceProvider::class,
-
Copy the test example.yaml definition from
stubs/database/definitions/
into the main laravel/database/definitions/
-
Install the composer dependencies from the package in root e.g.
composer require symfony/yaml --dev
composer require laracasts/generators --dev
composer require laravelcollective/html
- Create an admin user if necessary [http://blog.indiefolk.co.uk/laravel-4-create-users-with-artisan-tinker/]
cd into /packages/abcreative/laravel-maker/
directory
run `../../../vendor/bin/phpuni
Use the generator via artisan e.g. php artisan build:command
file
is a yaml file defined in /database/definitions/
tables
a comma separated list of tables
--clean
will delete an existing file
--force
will overwrite an existing file
build:clean file
Delete all the files generated by the package
build:controller file --force --clean
Create a new controller
build:crud file --force --clean
Create a new model, controllers, routes, views and migration
build:migration file --force --clean
Create a new set of migrations
build:model file --force --clean
Create a new model
build:request file --force --clean
Create a new set of request classes
build:route file --force --clean
Create a new route
build:view file --force --clean
Create a new set of view files
build:yaml tables --force --clean
Create Yaml from one or more database tables
This package has been developed by AB Multimedia Ltd
Copyright (c) 2018 AB Multimedia Ltd
For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
This package is open-sourced software licensed under the MIT license.