マスタテーブルのメンテナン画面は、単純な CRUD 画面なのですが、テーブル数が多いと、いちいち作るのも手間がかかります。
そこで、Laravel のパッケージとして、Laravel-Table-Admin を作りました。
https://github.com/shin1x1/laravel-table-admin
Laravel の対象バージョンは、4.1 以降としています。
何をするものか
マスタテーブルのメンテナンス画面など、ごく単純な CRUD 画面だけを作るパッケージです。
作るといっても、コードジェネレータではなく、設定を行えば、自動でテーブルスキーマから画面を動的に構築します。CakePHP の Scaffold と似た発想です。
いわば、機能がごくシンプルになった phpMyAdmin / phpPgAdmin を Laravel アプリケーションに組み込めるというものです。
百聞は一見に一見に如かずなので、画面キャプチャを。
一覧画面です。
編集画面です。
外部キーがある場合は、参照先テーブルの内容がプルダウンで選択できます。
デモアプリケーションを公開しています。こういった画面を簡単に作ることができます。
http://laravel-table-admin.herokuapp.com/crud/classes
インストール
Composer でインストールします。
composer.json に以下を追加して、composer install or update して下さい。
{ "require": { "shin1x1/laravel-table-admin": "~0.1.0" } }
app/config/app.php
に ServiceProvider と Facade を追加します。
'providers' => [ // .... 'Shin1x1\LaravelTableAdmin\TAbleAdminServiceProvider` ],
'aliases' => [ // .... 'TableAdmin' => 'Shin1x1\LaravelTableAdmin\TableAdminFacade', ],
あとは、app/routes.php
で、このパッケージで CRUD 画面を表示する対象のテーブルを指定するだけです。下記では、classes
, nationalities
, riders
という3つのテーブルについて CRUD 画面を表示します。
TableAdmin::route([ 'classes', 'nationalities', 'riders', ]);
URL は、http://localhost/crud/{TABLE}
になります。{table}
の部分が、上記で指定したテーブル名になります。
これで、URL にブラウザからアクセスすると CRUD 画面が表示されます。
デモアプリケーションのコードも公開していますので、参考にして下さい。
https://github.com/shin1x1/laravel-table-admin-example
対象データベース
MySQL と PostgreSQL を対象としています。
対象テーブル
今のところ、プライマリキーがid
で、一覧やプルダウンメニューでの表示カラムはname
に固定しています。
多くの場合、これで問題無いと思いますが、ニーズがあれば、設定で変更できるような対応も考えています。
実用する際のポイント
実際のところ、この画面は管理者用機能になるでしょう。TableAdmin::route()
での指定では、Route::group()
などを使って、認証をかけると良いでしょう。
// admin フィルターがあるとして Route::group(['before' => 'admin'], function() { TableAdmin::route([ 'classes', 'nationalities', 'riders', ]); });
Laravel-4-Generators
同様のことを行う Laravel パッケージとしては、Laravel-4-Generators が有名です。
これはとても便利なパッケージで、私も migration file のジェネレータとして良く利用しています。
大きく異なるのは、Laravel-4-Generators は、コードジェネレータですが、Laravel-Table-Admin はコードの生成は行なわず、動的にテーブルスキーマを読んで、画面を組み立てています。
双方とも良し悪しはあるのですが、動的に画面を生成した方が、画面デザインの修正などを一箇所で行うことができるので、後であれこれ変更する際は楽だと判断しました。
Laravel-4-Generators は、バージョン2 以降には、ビューテンプレートのジェネレートで、一覧画面やフォーム画面の詳細部分が生成されなくなりました。これにより、単純にジェネレートしても、CRUD画面が作れなくなっています。これも本パッケージを作ろうと思った動機の一つです。
さいごに
自分が欲しかったので、作ってみました。今のところ、必要最低限を実装したという状態です。
あとは、付加機能(一覧での検索や並び替え、テーブルカラムの対応等)を足していこうと思っています。コントリビュートもお待ちしています:D
https://github.com/shin1x1/laravel-table-admin
- Older: はじめてのPHPカンファレンス関西