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そう。 短時間で、管理画面を作ることができるので、どんどん使って行けそうです。
欲を言えば
メニューは、管理画面からの登録式。 これはファイル編集で追加したいところ。