
Filament 使用笔记
Filament 基础配置指南:
1. 安装Filament
composer require filament/filament:"^4.0"
php artisan filament:install --panels
php artisan vendor:publish --tag=filament-config
# 可选,导入,导出csv文件使用
php artisan make:queue-batches-table
php artisan make:notifications-table
php artisan vendor:publish --tag=filament-actions-migrations
php artisan migrate
2. 生成Filament 主题
# 生成 theme.css
php artisan make:filament-theme --pm=pnpm
# 修改 vite.config.js,将下面内容加入到 input 数组中
"resources/css/filament/admin/theme.css"
# 在管理面板提供者中注册主题
->viteTheme('resources/css/filament/admin/theme.css')
3. 优化 Filament 主题
# 优化的css文件放入 theme.css。 例:resources/css/filament/themes/***.css';
@import '../themes/***.css';
# 执行pnpm run build 命令,重构资源
pnpm run build
4. 创建crud资源
# 建表,后面生成的resource数据,可以根据表自动生成相关字段的数据
php artisan make:migration create_articles_table
php artisan migrate
# 生成model
php artisan make:model Article
# 创建resouce
php artisan make:filament-resource Article --model
# 若页面没有刷新,要清除缓存
php artisan filament:clear-cached-components
开放Filament resource资源,允许自定义
# Publishing [filament-views] assets.
# Copying directory [vendor/filament/support/resources/views] to [resources/views/vendor/filament]
php artisan vendor:publish --tag="filament-views"
# INFO Publishing [filament-panels-views] assets.
# Copying directory [vendor/filament/filament/resources/views] to [resources/views/vendor/filament-panels]
php artisan vendor:publish --tag="filament-panels-views"
# 导出多语言
php artisan vendor:publish --tag=filament-panels-translations
常用插件
achyutn/filament-log-viewer 系统日志界面
unknow-sk/filament-logger 用户动态activityi记录
filament/spatie-laravel-media-library-plugin 图片多媒体资源上传form field
1. 集成bezhansalleh/filament-shield,配置权限
- 首次创建配置
# 安装依赖
composer require bezhansalleh/filament-shield
# 放出config
php artisan vendor:publish --tag="filament-shield-config"
# user model 中use HasRoles
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
}
# 执行命令初始化配置
# This command will: 这个命令将会:
# Publish core package config 发布核心包配置
# Publish core package migrations 发布核心包迁移
# Run initial migrations 运行初始迁移
# Publish shield config 发布盾牌配置
php artisan shield:setup
# 给数据库中第一个user配置管理员权限
php artisan shield:install admin
# 发布seeder文件
php artisan shield:seeder
# 发布翻译文件,可修改 组,图标,排序等
php artisan vendor:publish --tag="filament-shield-translations"
- 配置数据填充
# 配置database/seeders/DatabaseSeeder.php
use Spatie\Permission\Models\Role;
$super_admin = User::factory()->create([
'name' => 'Super Admin',
'email' => 'admin@admin.com',
'password' => 'admin',
]);
$this->call(ShieldSeeder::class);
$super_admin_role = Role::first();
$super_admin->assignRole($super_admin_role->id);
- 常用插件权限配置
// unknow-sk/filament-logger (activity记录)
// AppServiceProvider -> boot 方法中注册权限
use Spatie\Activitylog\Models\Activity;
use App\Policies\ActivityPolicy;
Gate::policy(Activity::class, ActivityPolicy::class);
// achyutn/filament-log-viewer (laravel 日志文件管理)
// AdminPanelProvider 中plugins 引入时加入权限
$panel
->plugins([
FilamentLogViewer::make()
->authorize(fn () => auth()->user()->can('View:LogTable'))
])
// 自定义 pages,需要再page中use HasPageShield 例:Dashboard
class Dashboard extends Page
{
use HasPageShield;
}
2. achyutn/filament-log-viewer 添加日志预览插件
# 安装依赖
composer require achyutn/filament-log-viewer
# Register the plugin inside your Filament panel:
use AchyutN\FilamentLogViewer\FilamentLogViewer;
return $panel
->plugins([
FilamentLogViewer::make(),
]);
3. unknow-sk/filament-logger 添加活动记录插件
# 安装依赖
composer require unknow-sk/filament-logger
php artisan filament-logger:install
php artisan migrate
# 发布翻译
php artisan vendor:publish --tag="filament-logger-translations"
- 注册资源 in PanelProvider
public function panel(Panel $panel): Panel
{
return $panel
->resources([
config('filament-logger.activity_resource')
]);
}
4. tomatophp/filament-language-switcher 添加多语言切换插件
composer require tomatophp/filament-language-switcher
php artisan filament-language-switcher:install
# 上面命令可能会执行 php artisan migrate
- 注册插件 in PanelProvider
public function panel(Panel $panel): Panel
{
return $panel
->plugin(\TomatoPHP\FilamentLanguageSwitcher\FilamentLanguageSwitcherPlugin::make());
}
- now on your User.php
model or any user model add this trait
use \TomatoPHP\FilamentLanguageSwitcher\Traits\InteractsWithLanguages;
- Publish Assets
php artisan vendor:publish --tag="filament-language-switcher-config"
php artisan vendor:publish --tag="filament-language-switcher-lang"
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 棉花糖先生
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果