【更新履歴】 crud-d-scaffold v2.0.0 – 全面リニューアル(2017.08.10)
ども、dog-earsです。
crud-d-scaffoldをメジャーバージョンアップしたので、詳しくご紹介します。
パッケージの概要
このパッケージは、Laravel 5.4用に基本的なCRUDアプリケーションを自動作成するために作られました。
※laravel 5.3を使っている方は、パッケージバージョン1.3.1を。laravel 5.2を使っている方は、パッケージバージョン1.2.0を使用してください。
このパッケージによって生成されるCRUDアプリケーションは、以下のような特徴を備えています。
■全般
・基本的なCRUD(新規作成、詳細表示、更新、削除)に加えて、「複製」機能あり
・表示には、Bootstrap3を採用
・設定ファイルでアプリ構成を記述 -> コマンド実行 で自動生成完了。
・2回目からの実行時は、 -fオプションですべて新しく上書き(マイグレーションファイル除く)
・モデル間の1対多リレーション作成可
・主な作成ファイルは、model、controller、migration、seeding、view
■一覧画面(index)
・絞り込み検索可(テキスト入力項目は部分一致、それ以外は範囲指定)
・各項目による並び替えも可。
・ページャーあり。
・カラムの表示・非表示は初期設定ファイルで設定可能。
・削除時、確認あり。
■新規登録/編集/複製登録 画面
・入力形式は、input、textareaから選択可能
・ただし、belongstoリレーションのあるカラムは、プルダウンが表示されます。
インストールおよび実行方法
Step1:パッケージのインストール
# /composer.json
"require": { ... "dog-ears/crud-d-scaffold": "2.*" }
追加後、
composer update
Step2:サービスプロバイダーの追加
# /config/app.php
'providers' => [ ... dogears\CrudDscaffold\GeneratorsServiceProvider::class, ],
Step3:Artisanコマンドで確認
php artisan
を実行すると、以下のコマンドが追加されています。
- 'crud-d-scaffold:setup' : Setup crud-d-scaffold with bootstrap 3
以上で、準備完了。
では、サンプルを登録してみましょう。
(i) パブリックリソースの公開
php artisan vendor:publish --tag=public --force
(ii) パッケージフォルダ内のcrud-d-scaffold.json.sampleをlaravelプロジェクトルートに名前を変更しつつコピーする
cp ./vendor/dog-ears/crud-d-scaffold/crud-d-scaffold.json.sample./crud-d-scaffold.json
(iii) crud-d-scaffold:setup の実行
crud-d-scaffold:setup -f
-f をつけてるとファイルを上書きします。
初回は、fオプションは不要です。(つけてても問題なし)
(iv) migration と seeding の実行
php artisan migrate
php artisan db:seed
以上で終了です。
アプリケーションを確認してください。
なお、もしアプリ構造を修正したい場合は、
migrate:rollback を実行後、migrationファイル(/database/migrations/)を削除してから、再度
crud-d-scaffold:setup -f
を実行してください。
crud-d-scaffold.json の仕様
・/*…*/ はコメントとして扱われます。
・処理上、true も “true" のようにダブルコーテーションで囲ってください。
{ "app_type": "web", /* [default:web] */ <- 現在、webのみ可 "models": [ { "name": "jointAuthor", /* [required] format[nameName] */ <- モデルの名前 "display_name": "JOINT AUTHOR", /* [required] */ <- モデルの表示名 "use_soft_delete": "true", /* [default:false] ex( true, false ) */ <- ソフトウェアデリートを使用するかどうか "has_many": ["nicePost"], /* [default:[]] format[nameName] */ <- has_many 関係がある場合は、対象モデル名を配列で記述。 "schemas": [ { "name": "realName", /* [required] */ <- カラム名(リレーションの場合は、モデル名_idにすること) "type": "string", /* [default:string] ex( integer, string ) */ <- カラムタイプ "input_type": "text", /* [default:text] text, textarea */ /* relation_column forced to pulldown */ "faker_type": "name()", /* [default -> ''(nullable must be true) ] ex( randomDigit(), randomNumber(2), numberBetween(1,30), word(), sentence(), paragraph(), text(), name(), address(), date('Y-m-d','now'), safeEmail(), password() ) */ <- seedのfaker type(ない場合は、''が入りますが、nullabelがtrueになっている必要があります。) "nullable": "false", /* [default:false] ex( true, false ) */ <- null を許すかどうか "display_name": "REAL NAME",/* [required] */ <- 表示名 "show_in_list": "true", /* [default:true] ex( true, false ) */ <- 一覧ページに表示するかどうか "show_in_detail": "true", /* [default:true] ex( true, false ) */ <- 詳細ページに表示するかとうか "belongsto": "", /* [default:""] */ <- belongsto する対象モデル "belongsto_column": "" /* [default:""] */ <- リレーションカラムで表示する対象モデルのカラム名 },{
オプション
-f, –force ファイルを上書きます。(オプションがない状態で、既存ファイルがある場合は、処理がそこで止まります。)
使用上の注意
・LaravelのAuth認証を使うこともできます。最初に[ php artisan make:auth ]してから、crud-d-scaffoldを実行してください。
・データベース上のテーブルの変更・削除はできません。手動でmigrate:rollbackと旧マイグレーションnファイルを削除したあと、新たにマイグレーションファイルを作ることになります。
・コラム名やモデル名などは、Laravelの規約にのっとって、自動的に変換されます。そのため、同じ単語の複数形のモデルと単数形のモデルを指定することはできません。
今後、実装する予定の機能
・現在、ウェブアプリケーションのみ生成可能ですが、バックエンドAPIとしても生成できるようにしたい。
・バックエンドAPIとしても生成できるようにした後、同じcrud-d-scaffold.jsonで、angularでフロントを自動生成するパッケージを作りたい。
・フォームバリデーション
・hasmanyモデルの一覧を詳細ページに表示する。
・input_typeにファイルアップロードを指定できるようにする。
・テストも自動生成する
など。
テスト環境
このパッケージは、Laravel duskでテストしています。
詳細は、下記のリポジトリを見てください。
This package is tested by laravel dusk.
see below repository.
Discussion
New Comments
my memo: add later
– relation with users