Laravel-Filament環境構築

Filamentに行き着いた経緯

管理画面を作りたくて、初めに見つけたのが「laravel-admin」だった。しかし、アップデートがあまりされていないようなので、却下することに。

続けて見つけたのが「filament」。デモ画面を見てひとめぼれ。活気もあるようなので、これに決定。

資料

Filamentのインストール

本手順書にも下記の手順が書いてあるので、リンク先に行って作業する必要なない。

  1. Laravel環境の構築
    Laravel環境構築(実践版)の「テンプレートから環境構築」の部分。
  2. Filamentのインストール
    公式の「Installation」を参考にした。

が、何故かはじめは同じ手順をしているはずがadmin画面がエラーで表示されず何度もやりなおした。あれは何だったのだろうか。v2ではなくv3を入れようとしていたのだろうか。不明だ。たぶん、他のDockerが起動している状態で新しいDockerをインストールしようとして失敗したと思われる。

Laravelのインストール

テンプレートをダウンロード

ucan-labさんのテンプレートをダウンロード

git clone https://github.com/ucan-lab/docker-laravel

フォルダ名を変更(任意)

練習用なのでsample1に変更

mv docker-laravel sample1

構築

テンプレに基づき、PHP、NGINX、MySQL、Laravel環境を構築する。

cd sample1
make create-project

appコンテナに入る

以下の作業はappコンテナ内で行う。

  • Filamentのインストール
make app

どのバージョンをインストールするか?

バージョン2.xと3.xが有る。古いほうが情報が多いが、公式は3.xを推している。

バージョン3.xのインストール

公式のインストレーションを見ながら作業をした。

設定の編集

composer.jsonの項目を編集する

"minimum-stability": "dev",

filamentのインストール

appコンテナ内で下記のコマンド

composer require filament/filament:"^3.0-stable" -W

Filament Panel Builder のインストール

これをインストールするとパネルを含めて一通りのパッケージ(ウィジェットなど)も使えるようになるっぽい。

php artisan filament:install --panels

初期ユーザーの作成

php artisan make:filament-user

configファイルの発行(生成)

後々必要になるであろうconfigファイルを作っておく。

php artisan vendor:publish --tag=filament-config

バージョン2.xのインストール

公式のインストレーションを見ながら作業をした。

filamentのインストール

appコンテナ内で下記のコマンド

composer require filament/filament:"^2.0"

jsonファイルの編集

composer.jsonのpost-update部分に追記。元からあった行の最後に,を入れ忘れないように。

        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --ansi --force",
            "@php artisan filament:upgrade"
        ],

初期ユーザーの作成

php artisan make:filament-user

確認

localhost/admin/にアクセスして確認。

追加のインストール

filament breezyの導入(⚠要検討)

公式のBreezeのfilament版。公式よりもfilament専用であれば競合なども少ないだろうということで採用。

もう一つの候補

インストール

composer require jeffgreco13/filament-breezy

編集

config/filament.phpを編集せよ!とあるけれど、これ、どこのフォルダなんだ??venderの方には入るんだけど??⚠要調査

vendor/filament/filament/config/filament.php

'auth' => [
    'guard' => env('FILAMENT_AUTH_GUARD', 'web'),
    'pages' => [
        'login' => \Filament\Http\Livewire\Auth\Login::class,
    ],
],
    ↓
"auth" => [
    "guard" => env("FILAMENT_AUTH_GUARD", "web"),
    "pages" => [
        "login" => \JeffGreco13\FilamentBreezy\Http\Livewire\Auth\Login::class,
    ],
],

コメントする