こんばんは、最近Auto CADを久しぶりに弄るようになったのるぼるのんです。ストレッチブロックや透過性ブロックを用意しておくと、データも軽いし使い勝手が良いので楽しいですよね(アイボルトとかね、M10~24くらいは用意したいです)。まあ今回の記事とはなんの関係もないですが。。。そのうちAutoCADでも何か記事を書ければな、と思います。(永年ライセンス復活しないかな、、、)
前回までの記事ではLaravel5.7にLaravel-adminを実装し、インストール直後の機能を確認しました。
インストールした段階では管理ユーザーマスタ、権限マスタ、メニュー、プラグインなどで、管理画面らしいCRUDは見当たらないようでしたね。そしてかなりのBootStrap感。
今回は、管理画面っぽい機能の作成ということでフロントのユーザーマスタおよび商品マスタを例として作成してみたいと思います。
フロントユーザーのCRUD
Laravel-adminではadmin-users(管理者)とusers(フロント)で認証を分離しています。
User モデルがフロント側として使われているのが嬉しいですね。登録その他の処理を記述しなくて済むので工数の低減になります。認証ガードも用意してあるのがVoyagerとは大きく違いますね。
勿体無いのでCRUDを作る一例にしましょう。
・Userマスタの作成
1 |
php artisan admin:make UserController --model=App\\User |
コンソールからartisanコマンドを叩きます。モデルにはUserモデルを指定。
UsersController.phpが出力されました。
なんと、モデルのカラムに合わせた内容でForm, Showなどを作成してくれるようですね。え、クッソ便利やんけ。
一覧画面の編集はgrid関数でいじれるみたいです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
protected function grid() { $grid = new Grid(new User); $grid->id('Id')->sortable(); $grid->name('名前'); $grid->email('Email'); $grid->email_verified_at('Email verified at'); // $grid->password('Password'); // $grid->remember_token('Remember token'); // $grid->created_at('Created at'); // $grid->updated_at('Updated at'); return $grid; } |
Passwordなどは表示させる意味がないので、非表示にしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php use Illuminate\Routing\Router; Admin::registerAuthRoutes(); Route::group([ 'prefix' => config('admin.route.prefix'), 'namespace' => config('admin.route.namespace'), 'middleware' => config('admin.route.middleware'), ], function (Router $router) { $router->get('/', 'HomeController@index'); $router->resource('users', UserController::class); //追記やで }); |
Route.phpに追記して/admin/usersにアクセスしてみます。
んほおおおおおおおおおお!便利!sortable関数を通すとIDやnameなどのカラムでソート出来るようになるようです。
コントローラーを出力するコマンド、ルート追加でマスタを作成出来るようです、超便利やんけ、、、
ですがコントローラーを作成しただけではサイドメニューに反映されないようです。
admin/auth/menuからサイドメニューに反映しましょう。
一回失敗しました、、、笑。
Prefixを設定していますので、/admin/usersではなく/usersでいいようです。アイコンも確認しながら選べるのが憎いですね。
それではモデルから作成してみましょう。
・Productsマスタの登録
モデルを作成します。一緒にmigrationファイルを作成。
1 |
php artisan make:model Product -m |
mgrationファイルを編集、tableの作成。
1 2 3 4 5 6 7 8 9 10 11 |
public function up() { Schema::create('products', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('photo'); $table->integer('price'); $table->integer('category'); $table->timestamps(); }); } |
マイグレーション
1 |
php artisan migrate |
コントローラー作成
1 |
php artisan admin:make ProductController --model=App\\Product |
モデルがないお!みたいに言われた時は参照場所もしくはバックスラッシュの場所を確認ください(1敗)
photo、priceカラムにそれっぽいのが当たってる!ルートを登録して早速確認してみましょう。
Nameはtextが、PriceにはNumberのinputが当たっているようですが、Imageはtext inputが当たっています。それじゃダメなんだよなああ
ちょっと変えましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new Product); $form->text('name', 'Name'); $form->image('photo', 'Photo'); $form->number('price', 'Price'); $form->number('category', 'Category'); return $form; } } |
これで良さそう!。Photoも無事、画像のアップロードを出来る感じになりました!
Laravel-admin, 正直侮ってました。かなり使いやすいです。
VoyagerのBREADがブラウザからの直感的な操作だとしたら、laravel-adminはコードからの素早い編集、って感じです。
Local環境ではかなりの速度で管理画面を構築出来ると思います。
しかし、お気づきだとは思いますが、categoryはリレーションにしたいところです。(できればselect boxを使用したい)。
1対多、多対多のリレーションさえ設定できるようになれば、慣れにもよりますが管理画面の構築がかなりスピーディになりそうです!
次回はLaravel-adminでリレーションを設定する方法を発掘してお伝えしたいと思います!
コメントを書く