filament 初使用记录

安装初始化

一、环境准备

官网要的
在这里插入图片描述
我安装的
php

二、下载安装

  1. 安装laravel
composer create-project --prefer-dist laravel/laravel 项目名称 10.*
  1. 导入 filament
composer require filament/filament
  1. 注册 filament 管理面板
php artisan filament:install --panels

初始化

  1. 设置.env 文件
  2. 执行数据库文件迁移
php artisan migrate
  1. 创建首个用户用于登录
php artisan make:filament-user
  1. 运行启动项目
php artisan serve

资源使用与发布

发布资源(添加菜单项)

默认只有一个Dashboard 的仪表板页面
在这里插入图片描述
其余资源需要自行发布

  1. 创建模型
php artisan make:model Posts -m

会新增两个文件一个是模型文件,一个是对应模型数据库表的迁移文件,如需定义可以。可以在模型以及数据库迁移文件中设置不同模型或不同的数据表之前的关联关系。
下面是执行
php artisan make:model TestModal -m
这个命令之后的产物
在这里插入图片描述

  1. 引入资源
php artisan make:filament-resource SomeName

此命令会产生四个文件
下面是执行
php artisan make:filament-resource TestModal
该命令的产物
在这里插入图片描述
此时我们的左侧侧边栏中出现了资源的导航菜单,但需要注意的是,上述命令不会在数据库中创建表,所以需要自己执行数据库迁移文件,不然访问这个资源时会报没有找到这个数据表的SQL错误
在这里插入图片描述

数据table的展示相关内容

找到在app/Filament/Resources/这个目录下的xxxResource.php 资源文件的table方法

table 显示字段

 public static function table(Table $table): Table
    {

        return $table
            ->columns([
               //    ...
                Tables\Columns\TextColumn::make('name')
                    ->searchable()
                    ->label('姓名')
                ,
                Tables\Columns\TextColumn::make('email')
                    ->label('邮箱')
                ,
                  //          ...
            ])

    }

table 数据过滤筛选 filters

以posts 表为例
对其中的文章发布状态 、文章所属频道进行筛选过滤

->filters([
                //
                Tables\Filters\SelectFilter::make('status')
                    ->label('状态')
                    ->options([
                        'draft' => '草稿',
                        'publish' => '发布',
                    ]),                Tables\Filters\SelectFilter::make('article_channel_id')
                    ->relationship('articleChannel', 'name')
                    ->searchable()
                    ->preload()
                    ->label('文章频道')
                ,
            ])

效果如截图所示
在这里插入图片描述

操作栏目按钮设置 在 actions中

  ->actions([
                Tables\Actions\ActionGroup::make([
                    Tables\Actions\ViewAction::make()->label('查看'),
                    Tables\Actions\EditAction::make()->label('编辑'),
                    Tables\Actions\DeleteAction::make()->label('删除'),
                ])

            ])

按钮可以分组或拆分 例子演示的时划分组的例子集合了查看编辑删除按钮效果如截图所示
在这里插入图片描述

选中后的批量操作在 bulkActions

 ->bulkActions([
                Tables\Actions\BulkActionGroup::make([
                    Tables\Actions\DeleteBulkAction::make(),
                ]),
            ])

默认例子是演示批量删除功能效果如截图所示
在这里插入图片描述

表单的定义

表单组件库

参考例子
 public static function form(Form $form): Form
    {
        return $form
            ->schema([
                // 正常文本输入框
                Forms\Components\TextInput::make('title')
                    ->label('文章标题')
                    ->required()
                    ->maxLength(255)
                    // 占满一行宽度 默认是一半的宽度
                    ->columnSpanFull()
                ,
                // 录入tag标签 存入数据库时以,分隔
                Forms\Components\TagsInput::make('keywords')
                    ->label('关键字')
                    ->separator(',')
                    ->required()
                ,
                // 文本输入域 
                Forms\Components\Textarea::make('describe')
                    ->label('文章简介')
                    ->required()
                    ->maxLength(255)
                ,
                // 文件上传
                Forms\Components\FileUpload::make('cover_img')
                    ->label('文章封面')
                    ->image()
                ,
                //posts article_channel_id关联查询articleChannel表的name属性供选择,返回对应name的id 属性 
                
                Forms\Components\Select::make('article_channel_id')
                    ->relationship('articleChannel', 'name')
                    ->searchable()
                    ->preload()
                    ->required()
                    ->label('文章频道')
                    // 新建频道表数据的弹窗
                    ->createOptionForm([
                        Forms\Components\TextInput::make('name')
                            ->required(),
                    ])
                ,
                // 富文本
                Forms\Components\RichEditor::make('content')
                    ->label('正文内容')
                    ->required()
                    ->columnSpanFull()
                    ->toolbarButtons([
                        'attachFiles',
                        'blockquote',
                        'bold',
                        'bulletList',
                        'codeBlock',
                        'h1',
                        'h2',
                        'h3',
                        'table',
                        'italic',
                        'link',
                        'orderedList',
                        'redo',
                        'strike',
                        'underline',
                        'undo',
                    ])
                ,
                // 确定固定配置的的下拉框选择器
                Forms\Components\Select::make('status')
                    ->label('文章状态')
                    ->options([
                        'draft' => '草稿',
                        'publish' => '发布',
                    ])
                    ->default('draft') // 默认已选项
            ]);
    }

权限控制面板的插件使用

youtube视频教程
文档 bezhansalleh/filament-shield

安装

composer require bezhansalleh/filament-shield

为需要的模型添加 use HasRoles;

以User模型为例子

use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
 
class User extends Authenticatable
{
    use HasRoles;
     // ...
}

发布配置文件,然后在配置文件中设置你的配置项

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

执行后在你的config 文件目录下新增 filament-shield.php文件

为你需要的面板新增插件例如文件
app/Providers/Filament/AdminPanelProvider.php

use BezhanSalleh\FilamentShield\FilamentShieldPlugin;

  ->plugins([
                FilamentShieldPlugin::make()
                    ->gridColumns([
                        'default' => 1,
                        'sm' => 2,
                        'lg' => 1
                    ])
                    ->sectionColumnSpan(1)
                    ->checkboxListColumns([
                        'default' => 1,
                        'sm' => 2,
                        'lg' => 6,
                    ])
                    ->resourceCheckboxListColumns([
                        'default' => 1,
                        'sm' => 2,
                    ]),
            ])

最后执行指令进行安装整个权限到项目中

php artisan shield:install

关闭任意角色用户可见roles菜单的权限

在之前

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

这个命令执行后生成的config/filament-shield.php文件中找到 register_role_policy配置项 配置 enabledtrue

'register_role_policy' => [
        'enabled' => true,
    ],
Filament引擎是一种现代化的渲染引擎,用于实时渲染图形,特别是用于移动设备和虚拟现实平台。它是由Google公司开发的,旨在为开发者提供高质量、高性能的渲染功能。 Filament引擎的一个重要特点是其卓越的可视效果。它使用基于物理的材质系统,能够模拟光照、阴影、反射等视觉效果,使得渲染出来的图像更加逼真和细腻。同时,Filament引擎还支持更高级的图形功能,如屏幕空间反射、全局光照和泛光效果等,以提供更出色的视觉体验。 除了可视效果外,Filament引擎还注重性能。它采用了先进的渲染技术和算法,以提高渲染速度和效率。该引擎能够在移动设备和虚拟现实平台上运行,而不影响用户体验,并且可以自动适应不同硬件设备的性能和功能。 另外,Filament引擎还提供了灵活的工具和API,使开发者能够更轻松地创建和定制渲染效果。开发者可以使用Filament的材质编辑器和场景编辑器来调整和优化图形效果,也可以通过使用Filament的C++ API来实现更高级的自定义需求。 总之,Filament引擎是一款功能强大、易于使用且性能优越的渲染引擎。它将高质量的视觉效果和高性能相结合,为开发者提供了创建令人惊叹的实时渲染图形的能力。无论是用于移动游戏、虚拟现实应用还是其他图形渲染需求,Filament引擎都能够发挥重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值