Filamentphp

filamentphp 是可以修改代码自动刷新页面的,不仅是blade文件,resource文件也可以

同事做的项目初始化,我接手的时候,filament已经安装好了,无奈hot reload一直不行,每次改完都要按一下刷新,太难了

按照以下步骤检查了配置

env的APP_URL配置正确

vite的配置也对

import {defineConfig} from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: [
                'resources/css/app.css',
                'resources/js/app.js',
                'resources/css/filament/admin/theme.css'
            ],
            refresh: true,
        }),
    ],
});

tailwindcss也没啥问题

import defaultTheme from 'tailwindcss/defaultTheme';
import forms from '@tailwindcss/forms';

/** @type {import('tailwindcss').Config} */
export default {
    content: [
        './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',
        './storage/framework/views/*.php',
        './resources/views/**/*.blade.php',
    ],
    theme: {
        extend: {
            fontFamily: {
                sans: ['Figtree', ...defaultTheme.fontFamily.sans],
            },
        },
    },
    darkMode: false,
    plugins: [forms, require('daisyui')],
    daisyui: {
        themes: ['light'],
        darkTheme: false,
        base: true,
        styled: true,
        utils: true,
        prefix: "",
        logs: true,
        themeRoot: ":root",
    },
};

public目录也有hot文件

http://[::1]:5173 奈何浏览器控制台并没有

[vite] connecting...
[vite] connected.

应该是不知道为什么 @vite('resources/js/app.js') 这个代码没有注入到filamentphp的layout文件里

解决方法

直接修改adminpanelprovider,手动把这行代码注入进去

class AdminPanelProvider extends PanelProvider
{

    public function register(): void
    {
        parent::register();
        FilamentView::registerRenderHook(PanelsRenderHook::HEAD_END, fn(): string => Blade::render("@vite('resources/js/app.js')"));

    }
    public function panel(Panel $panel): Panel
    {
        return $panel;
    }
}

Vite的配置

import {defineConfig} from 'vite';
import laravel, {refreshPaths} from 'laravel-vite-plugin';
export default defineConfig({
    plugins: [
        laravel({
            input: [
                'resources/css/app.css',
                'resources/js/app.js',
            ],
            refresh: [
                ...refreshPaths,
                'app/Http/Livewire/**', // Custom Livewire components
                'app/Filament/**', // Filament Resources
            ],
        }),
    ],
});

完美,少按一次r😭