laravel-adminの設定や、利用方法のメモを書いていきます。
もともとCakePHPを利用していて管理画面は、scaffoldベースで作っていたので、Laravelでも同じように自動生成に近いかたちで対応できないか色々と探して、試行錯誤していたところ、larave-adminパッケージが自分にしっくりきました。
インストール
composer require encore/laravel-admin
まず最初に実行する
→configファイル、言語ファイル、migrationファイル、assetsが出力される
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
マイグレーション実行や、初期サンプルや、Admin/routes.php等の生成される
php artisan admin:install
ストレージの設定
'disks' => [
...,
'admin' => [
'driver' =>'local',
'root' => public_path('uploads'),
'visibility' =>'public',
'url' => env('APP_URL').'/uploads',
],
],
設定関連
httpsにする
下記を追加すると、URL生成時にhttpsにしてくれる
ADMIN_HTTPS=true
基本的な画面の追加方法
Controllerの生成
php artisan admin:make UserController --model=App\\Models\\User
routesの追加
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
], function (Router $router) {
$router->get('/', 'HomeController@index')->name('admin.home');
$router->resource('users', UserController::class); // →これを追記
});
独自のViewファイルを利用方法
Layoutは維持して中身だけ独自Viewを利用する方法
下記のようにして、Layoutは維持して中身だけ独自Viewを利用可能。
ただし、view()を利用すると、row()で追加されている内容はすべて無視される
$content
->title('てすとページ')
->view('admin.admin_message_threads.exchange');
1行だけviewを利用
$content->row(function (\Encore\Admin\Layout\Row $row) use ($id, $user) {
$row->column(3, ''); // 余白用
$row->column(6, function (Column $column) use ($id, $user) {
$box = new Box('操作', view('admin.user.form.action.action')->with(compact('user')));
$box->style('primary');
$column->append($box);
});
});
ページまるごとViewテンプレートにする方法
laravel-adminのViewファイルを全コピーして、下記にようにして設定が必要そう
app('view')->prependNamespace('admin',resource_path('views/laravel-admin'));
$content
->title('てすとページ')
->row('<table border=1><tr><td>ほげほげ</td></tr></table>')
->body('てすとメッセージ');
return view('laravel-admin/test-page','admin::content' => $content]);
参考サイト
22 Laravel-admin viewカスタマイズ [fl8 Wiki]
falshメッセージ表示helper
redirect()->with()
でFlashメッセージが表示できないみたいなので下記helperを呼び出す。
admin_success('タイトル', 'メッセージ本文です。');
// 右上に一定時間表示されて消えるトースト
admin_toastr('承認待ちに更新しました', 'success');
vendor/encore/laravel-admin/src/helper.php
を探るといろいろありそう。
ルーティング
標準のものに、asキーを追加しないと、nameがprefix付きにならない
※この場合、nameについて、asの値がすべてつくので注意
Route::group([
'prefix' => config('admin.route.prefix'),
'as' => config('admin.route.prefix') . '.', // これをつけないと、nameが、prefix付きにならない
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
], function (Router $router) {
xxx
});
参考サイト
Laravel 5.3 resourceでの名前付きrouteの変更 – ララジャパン
参考サイト
Laravel-adminを使って実用的な画面を作る。(1対多のリレーションシップに対応) – Qiita
Laravel 5.7 laravel-admin CRUDを導入しよう | のるぼるのるの
Laravel 5.7 Laravel-admin リレーションを追加する(belongsTo) | のるぼるのるの
Laravel 5.7 Laravel-admin リレーションを追加する(belongsToMany) | のるぼるのるの
Laravel5.7 laravel-admin バリデーションルールの追加 | のるぼるのるの
Laravel-admin TODO機能の作成④ – Qiita