Laravelで管理画面作成メモ

Laravelの管理者用の画面作成。

利用ライブラリ

このライブラリを使ってみます。
https://github.com/z-song/laravel-admin

インストール

Vagrant環境なので、sshでログイン。

vagrant ssh
cd code/laravel/

パッケージをインストールします。

composer require encore/laravel-admin
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"

管理者テーブルの作成

これで、/config/admin.phpができているはず。
このファイルで、インストールディレクトリ、DBのテーブル名などを定義できる模様。

今回は特に変更せず、そのままテーブルの作成。

php artisan admin:install

おっと、エラー。

Syntax error or access violation: 1103 Incorrect table name '' (SQL: create table `` (`id` int unsigned not null auto_increment primary key, `username` varchar(190) not null, `password` varchar(60) not null, `name` varchar(255) not null, `avatar` varchar(255) null, `remember_token` varchar(100) null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

2016_01_04_173148_create_admin_tables を確認。

記述が古いのか?
5.7verに書き換えてみる。

# 以下を追加
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;


# この部分を、
        Schema::connection($connection)->create(config('admin.database.roles_table'), function (Blueprint $table) {
# このように変更
        Schema::create(config('admin.database.users_table'), function (Blueprint $table) {          

まだ解消されない。
単純に、config/admin.phpが読み込まれていない?

php artisan config:cache

すると解消されました。

管理画面ログイン

これだけで、管理画面へログインできます。 http://localhost:3000/admin/auth/login admin / admin

クラスごとのコントローラ作成

基本的には、生成されている /Admin/Controllers/ExampleController.php を複製すれば大丈夫そう。 例えば一般ユーザなら

use App\User;

のように、モデルを追加しておく。

ルーティング

/Admin/routes.php

$router->get(‘/’, ‘HomeController@index’); の下に、以下を追加。

$router->get('/', 'HomeController@index');
$router->resource('hoge', UserController::class);

これで、 http://localhost:3000/admin/hoge へアクセスすれば、ユーザ一覧が表示されました。

その他、メニュー編集機能も完備。 うーむ素晴らしい、、

必要なカラムは、適宜 UserController を編集すればOKそう。 短時間で、管理画面を作ることができるので、どんどん使って行けそうです。

欲を言えば

メニューは、管理画面からの登録式。 これはファイル編集で追加したいところ。