shibuyakosuke/laravel-adminlte-crud-generator

This package is abandoned and no longer maintained. No replacement package was suggested.

Laravel CRUD generator for laravel-adminlte

dev-master 2019-11-29 10:14 UTC

This package is auto-updated.

Last update: 2020-08-29 12:06:59 UTC


README

Crud generator for laravel-adminlte

Feature

  • Generate lang files from Column Comment on MySQL Database.
  • Generate blade view files from tables and columns.
  • Generate Model files from tables and columns.
    • All models except user.
  • Generate Controller files from tables and columns.
  • Generate FormRequest files from tables and columns.
  • Generate ViewComposer files from tables and columns.
  • Add routing to routes/web.php

Install & Setup

Install laravel

composer create-project --prefer-dist laravel/laravel project_name "6.*"

Install laravel-adminlte-crud-generator

composer require shibuyakosuke/laravel-adminlte-crud-generator

Setup laravel

If you use Japanese, edit app/config/app.php

/**
 * app/config/app.php
 */
-    'locale' => 'en',
+    'locale' => 'ja',
/**
 * app/config/app.php
 */
    'providers' => [
+        Collective\Html\HtmlServiceProvider::class, // add
+        Watson\BootstrapForm\BootstrapFormServiceProvider::class, // add
+        Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, // add
    ],
/**
 * app/config/app.php
 */
    'aliases' => [
+        'Form' => Collective\Html\FormFacade::class, // add
+        'Html' => Collective\Html\HtmlFacade::class, // add
+        'BootForm' => Watson\BootstrapForm\Facades\BootstrapForm::class, // add
    ],

Setup laravel-adminlte

php artisan adminlte:install

see more information

Setup laravel-adminlte-crud

php artisan vendor:publish --provider="Shibuyakosuke\LaravelCrudGenerator\Providers\ResourceServiceProvider"

Output these files below.

  • /configs/adminlte_crud.php
  • /app/Observers/*
  • /app/Traits/*

Edit files

Add '(new AdminlteMenu($events))->build();' to 'AppServiceProvider::boot()', and it displays adminlte sidebar menu.

<?php

/**
 * app/Providers/AppServiceProvider
 */

namespace App\Providers;

use Illuminate\Events\Dispatcher;
use Illuminate\Support\ServiceProvider;
use Shibuyakosuke\LaravelCrudGenerator\AdminlteMenu\AdminlteMenu;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot(Dispatcher $events)
    {
        (new AdminlteMenu($events))->build(); // Add for menu of laravel-adminlte
    }
}

Display Breadcrumbs

/**
 * resources/views/vendor/adminlte/page.blade.php
 */

<section class="content-header">
    @yield('content_header')

    {{ Breadcrumbs::render(Request::route()->getName(), Request::route()->parameters()) }} // Add
</section>

Configs

/configs/adminlte_crud.php

<?php

return [
    'default_model_path' => 'app/Models/', // Output models to this path.
    'textarea' => 500, // If the max length is above this value, output textarea otherwise input element.
    'required_label' => '*', // If the field is not allowed null, output form element with this text.
    'required_label_position' => 'after' // or before
];

Usage

Run migration

Generate crud files, if you have migration files with comment like belows.

Notes

Foreign keys setting helps generating relations for models.

class CreateUsersTable extends Migration
{
    use \App\Traits\DatabaseCommonColumns; // add

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id')->comment('ID');
            $table->unsignedBigInteger('role_id')->comment('ロールID');
            $table->unsignedBigInteger('company_id')->comment('会社ID');
            $table->string('name')->comment('氏名');
            $table->string('email')->unique()->comment('メールアドレス');
            $table->timestamp('email_verified_at')->nullable()->comment('メール認証日時');
            $table->string('password')->comment('パスワード');
            $table->rememberToken()->comment('リメンバートークン');

            $this->addCommonColumns($table); // add

            // foreign keys setting helps generating relations for models. 
            $table->foreign('role_id')->references('id')->on('roles');
            $table->foreign('company_id')->references('id')->on('companies');
        });
        $this->comment('users', 'ユーザー'); // add table comment
    }
}
php artisan migrate

Generate crud

php artisan crud:generate

and then you should append this sentence to 'configs/app.php'.

/*
 * Package Service Providers...
 */
\App\Providers\ViewServiceProvider::class,

Options

Overwrite files

php artisan crud:generate --force

Specify table name

Separate multiple tables with commas

php artisan crud:generate --table=users,companies

Output files

project ┌ app ┬ Http ┬ Controllers ─ ExampleController.php
        │     │      │
        │     │      ├ Requests ─ ExampleFormRequest.php
        │     │      │
        │     │      └ View ─ Composers ─ ExampleComposer.php
        │     │
        │     └ (Models) ─ Example.php
        │
        └ resources ┬ lang ── (ja) ─┬ tables.php
                    │               └ columns.php
                    │
                    └ views ─ examples ┬ index.blade.php
                                       ├ show.blade.php
                                       ├ create.blade.php
                                       └ edit.blade.php

And append to route/web.php automatically.

Route::resource('/users', 'UserController');

Thanks to

@jeroennoten

@dwightwatson