laravel-adminの利用のためのメモ

Laravel logo Laravel

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

Vue.jsとPhpで見積りシステム(9)〜Laravel-Adminカスタマイズ 編〜 │ Web屋さんの覚書

Laravel-admin実装時メモ – Qiita

タイトルとURLをコピーしました