ab-creative/laravel-maker

Laravel 5.6 scaffolding generator

dev-master 2019-04-24 10:12 UTC

This package is not auto-updated.

Last update: 2024-11-13 21:17:25 UTC


README

Overview

Laravel Maker is a tool to kick start project development and help with prototyping by creating scaffolding from YAML based definitions.

Premise

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.

Requirements

Laravel 5.5+

Overview

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

Yaml

The yaml files are defined in /database/models

Commands

Contains the Artisan commands

stubs

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

Templates

This also mirrors the structure of Laravel.

e.g. BaseController, BaseModel

These files will be published as is.

Placeholders

__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

Getting started

  1. Setup a Laravel site as normal...

  2. laravel new t6.example.com

  3. php artisan key:generate

  4. Edit .env

  5. php artisan migrate

  6. php artisan make:auth

  7. Create and cd into /packages/AbCreative directory

  8. git clone https://github.com/ab-creative/laravel-maker.git

  9. Edit /composer.json to add the package:


"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/",
            "AbCreative\\LaravelMaker\\": "packages/AbCreative/laravel-maker/src"
        }
    },

  1. Add the package to config/app.php providers:
/*
 * Package Service Providers...
 */

AbCreative\LaravelMaker\LaravelMakerServiceProvider::class,

  1. Copy the test example.yaml definition from stubs/database/definitions/ into the main laravel /database/definitions/

  2. 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

  1. Create an admin user if necessary [http://blog.indiefolk.co.uk/laravel-4-create-users-with-artisan-tinker/]

Tests

cd into /packages/abcreative/laravel-maker/ directory

run `../../../vendor/bin/phpuni

How to use

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

Copyright

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.

License

This package is open-sourced software licensed under the MIT license.