こんにちは。バックエンドエンジニアの佐和です。
案件でしばらくlaravel-adminという管理画面を作成するためのライブラリを使っていたので、調べたことやつまづいたところも含めて少しずつ書き起こそうと思います。
まずはインストール編です。簡単に管理画面を確認できるところまで見ていきたいと思います。
laravel-adminとは
laravelで簡単にDBの管理画面を作成することができるライブラリです。
ドキュメントやデモサイトなど使用するために必要な資料が充実しており、難しいカスタムを行う必要がなければものすごく簡単に管理画面が構築できます。
Laravel-admin(ドキュメント)
GitHubページ
基本的な使用方法は上記でカバーし、カスタマイズして使用したい際には直接ソースコードを読んで適宜書き換えていく形になります。
主観ですが、コード内のコメントも(おそらく書き換える前提の部分は)丁寧に書かれているので、しっかり読み解けば問題ないかと思います。
プロジェクトの作成
既に開発しているlaravelプロジェクトに追加する場合は、この章は飛ばしてもらって大丈夫です。
何もないところからlaravel-adminを試したい方は、まずlaravelプロジェクトを作成するところから始めましょう。
公式によると、現在のバージョンでは以下の環境が推奨されるようです。
- PHP 7+
- laravel 5.5+
This package requires PHP 7+ and Laravel 5.5, for old versions please refer to 1.4
laravel-admin install
$ composer create-project --prefer-dist "laravel/laravel=5.5.*" <project-name>
DBも必要になってくるので、.envにDBの情報も書き足しておきましょう。
インストール
laravelの準備ができたら早速laravel-adminをインストールします。
$composer require encore/laravel-admin
インストールが終わったら下記コマンドを実行します。
$php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
$php artisan admin:install
これらを実行すると、app/Admin
ディレクトリが作られます。これからの実装はこのディレクトリ配下で行うことになります。
ファイルの初期配置は以下。
app/Admin
├── Controllers
│ ├── ExampleController.php
│ └── HomeController.php
├── bootstrap.php
└── routes.php
フロント周りのファイルは/public/packages/admin
に置かれています。
構成ファイルはconfig/admin.php
です。後々触ることになります。
ここまでで既にダッシュボードは作成されているので、php artisan serve
などをして、http://localhost:8000/admin にアクセスしてみましょう。
ID・PASSどちらにもadmin
と入力し、無事ダッシュボードが表示されれば成功です。
早速DBテーブルの管理画面を作成していきましょう。
モデル・コントローラ作成
laravelでDBテーブルを認識するためにモデルを作成します。
$php artisan make:model Recipe
モデルが作成されたのを確認したら、それを利用してAdmin用のコントローラを作成します。
$php artisan admin:make RecipeController --model=App\\Recipe
成功すると、作成したコントローラのルーティング情報がターミナルに出力されます。
これをapp/Admin/routes.php
に記述しましょう。
$router->resource('admin/recipes', RecipeController::class);
上記ルーティング情報のURLを叩くと、それらしい画面が表示されていると思います。
あとは作成したAdmin用のコントローラを、ドキュメントを参考にしながら更新していく流れになります。
現在仕様として提供されているのは以下のページです。
- 一覧画面(
grid
関数) - 詳細画面(
show
関数) - 新規作成・編集画面(
form
関数)
それぞれドキュメントに基本の使用方法からカスタマイズ方法まで乗っていますので、一通り目を通すことをお勧めします。
まとめ
とても簡単に導入できるので、気になっている方は一度試して見ると面白いかも知れません。
その他、主にカスタマイズ部分でつまづくことが多かったので、少しずつ記事にして行こうかと思います。