PHP-AdminLTEインストール

PHPでAdminLTEインストール
AdminLTE は複数の方法を使用してインストールできます。
ここでは、Laravelを使わないで、PHP等の言語で直接AdminLTE を使う場合の方法を説明します。
AdminLTE のダウンロード
Githubより、最新のリリースをダウンロードします。
1)コマンドラインでインストール
コマンドラインでインストールする手順を説明します。 参考ページは、こちら
NPMの場合
npm install admin-lte@^3.0 --save
※詳細は、は、こちら を参照してください。
2)CDNを使う場合
上記でダウンロードします。
以下のCDNをソースに貼り付けます。(最新バージョンを選んでください。)
<script src="https://cdn.jsdelivr.net/npm/admin-lte@3.2/dist/js/adminlte.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@3.2/dist/css/adminlte.min.css">
※詳細は、は、こちら を参照してください。
以上で導入作業は完了です。
AdminLTE の説明
デモページを見れば分かりますが、デザインがとてもいい感じです。✨
管理画面とかにピッタリですね。
デザインに個性を求めない限り、多くの場合これで事足りると思います。

LaravelでCRUDアプリを作成する際に、AdminLTEを使用して実装しました。
良ければ以下の記事もご覧ください。

レスポンシブデザイン対応
AdminLTEはレスポンシブデザインに対応しており、閲覧する端末によってレイアウトが最適化されます。
例えば、スマホでアクセスした場合はこんな感じです。

タブレットでアクセスした場合はこんな感じです。

高いカスタマイズ性
AdminLTEはカスタマイズ性が高いです。
デモサイトでは、自分の好みの画面を簡単に確認できます。
以下の右上の①ボタンをクリックします。
②のメニューでカスタマイズできます。

設定を選ぶだけで、色合いや挙動などを変更し、その場で確認できます。
おおよそ自分が作成したいイメージを掴めると思います。

豊富な例
デモページには豊富な例があり、また標準でパーツが充実しています。
これらを使用することで、デザインの統一感も出せますし、自分でデザインを作らなくても済むので便利です。
例えば以下のようなボックスの例です。

プラグインの同梱
よく使いそうなプラグインは既に同梱、または使用例が示されています。
例えばチャートです。

カレンダーもあります。(FullCalendarですね)

もちろん、こういった拡張は個別に導入することもできるのですが、相性だったり他のプラグインの影響で動かない・・なんてこともよくありますので、最初からデモとして動作確認されているのはありがたいですね。🙂
Bootstrapについて
AdminLTEのベースはBootstrap 4です。
ですので、もちろんグリッドシステムを使うことができ、レイアウトの調整が非常に楽です。

はじめに
世界で最も人気のあるフレームワーク Bootstrap で始めましょう。CDN とテンプレートを使ってモバイルファーストなサイトを構築できます。
Bootstrapの4と5の大きい違いとして、脱jQueryです。
つまり、現状のAdminLTEでは、jQueryに依存しております。
(それが良いか悪いかはさておき)
AdminLTEの方でもissueが作成されており、いずれはBootstrap5へと移行されることでしょう。
upgrade to bootstrap 5 · Issue #2855 · ColorlibHQ/AdminLTE
will be upgraded in AdminLTE v4 after AdminLTE v3.1.0 release
依存・プラグインについて
各プラグインや依存しているものは以下にまとまっています。
Dependencies & Plugins
AdminLTE v3.1 Documentation
参考
画面イメージ
登録されたデータの一覧と、新規登録、編集、削除ボタンを配置しています。
一覧件数が多い場合は、ページネーションを表示するようにしました。

プロジェクトの作成
Sail を使いプロジェクトを作成します。
$ curl -s https://laravel.build/laravel9-app-crud | bash
「laravel9-app-crud」の部分はプロジェクト名ですので、任意で指定してください。
VS Code でプロジェクトを開きましょう。
これ以降は、VS Code のターミナルでコマンドを実行します。
Sail を起動します。
$ sail up -d
最低限の設定を行います。
以下のファイルの該当の個所を修正します。
config\app.php
'timezone' => 'Asia/Tokyo',
..
'locale' => 'ja',
Laravel-AdminLTEを導入
Laravel-AdminLTEの詳細については、以下の記事をご覧ください。

Composer を使用してLaravel-AdminLTEをインストールします。
Laravel のプロジェクト直下で、以下のコマンドを実行します。
$ sail composer require jeroennoten/laravel-adminlte
$ sail artisan adminlte:install
これでデザインが管理画面風になります。
テーブルの作成
今回は「商品マスタ」を想定したマスタメンテナンス画面を作成します。
以下のコマンドでテーブルを作成します。
$ sail artisan make:migration create_products_table
以下のファイルを開き修正します。(日付部分は作成日時)
項目としては「商品名」と「価格」を追加しました。
database\migrations\2022_01_30_143006_create_products_table.php
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('price');
$table->timestamps();
});
テーブルを作成します。
$ sail artisan migrate
テーブルに対するモデルクラスを作成します。
$ sail artisan make:model Product
コントローラ作成
以下のコマンドでコントローラを作成します。
引数「-r」を指定することにより、CRUD に必要な関数が自動で作成されます。
$ sail artisan make:controller ProductsController -r
ルーティングの作成
CRUD に必要なルーティングを追加します。
以下の一行を追加します。
routes\web.php
use App\Http\Controllers\ProductsController;
// 商品マスタ ルーティング一覧(showは使わない)
Route::resource('product', ProductsController::class, ['except' => ['show']]);
コントローラには、CRUD に必要な関数が自動で追加されますが、今回は「show」を使わないため、上記のような指定になっています。
画面にアクセスするURLは以下になります。
http://localhost/product
一覧ページの作成
以下のコントローラを修正します。
商品テーブルからデータを取得し、ビュー(Blade)へデータを渡します。
app\Http\Controllers\ProductsController.php
use App\Models\Product;
...
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
// 商品一覧
$products = Product::all();
return view(
'product.index',
['products' => $products]
);
}
テンプレートファイルを作成します。
今回は AdminLTE を使用していますので、余計な HTML を実装する必要はありません。
用意されているテンプレートを読み込むだけです。
一覧のデータをテーブルタグで表示し、新規登録、編集、削除ボタンなどを配置しています。
resources\views\product\index.blade.php
@extends('adminlte::page')
@section('title', '商品一覧')
@section('content_header')
<h1>商品一覧</h1>
@stop
@section('content')
{{-- 完了メッセージ --}}
@if (session('message'))
<div class="alert alert-info alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">
×
</button>
{{ session('message') }}
</div>
@endif
{{-- 新規登録画面へ --}}
<a class="btn btn-primary mb-2" href="{{ route('product.create') }}" role="button">新規登録</a>
<div class="card">
<div class="card-body">
<table class="table table-bordered">
<thead>
<tr>
<th>商品名</th>
<th>価格</th>
<th style="width: 70px"></th>
</tr>
</thead>
<tbody>
@foreach ($products as $product)
<tr>
<td>{{ $product->name }}</td>
{{-- 数字フォーマット --}}
<td>{{ number_format($product->price) }}</td>
<td>
<a class="btn btn-primary btn-sm mb-2" href="{{ route('product.edit', $product->id) }}"
role="button">編集</a>
<form action="{{ route('product.destroy', $product->id) }}" method="post">
@csrf
@method('DELETE')
{{-- 簡易的に確認メッセージを表示 --}}
<button type="submit" class="btn btn-danger btn-sm"
onclick="return confirm('削除してもよろしいですか?');">
削除
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@stop
続きは、こちらへ
https://chigusa-web.com/blog/laravel-crud/
余談ですが、Django向けに解説した記事もございますので参考にしてください。
