filament 初使用记录

news2024/9/9 1:11:16

安装初始化

一、环境准备

官网要的
在这里插入图片描述
我安装的
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,
    ],

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1958836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KubeSphere部署:(一)环境准备

本文介绍windows系统,安装wsl虚拟机(ubuntu),并在ubruntu中配置连接私有harbor及阿里云镜像等。 在确定该方式前,博主也曾尝试过通过安装Docker Desktop的方式,但每次重启电脑之后,docker桌面端…

Photoshop 2023:创意无限的图像编辑神器

Photoshop 2023 是一款专为 Mac 和 Windows 系统设计的强大图像编辑软件,为专业设计师和业余爱好者提供了无与伦比的创作工具和功能。 一、强大的编辑工具 Photoshop 2023 拥有丰富的编辑工具,如选择工具、画笔工具、橡皮擦工具等。其选择工具能够精确…

Matlab编程资源库(14)常微分方程初值问题的数值解法

一、 龙格-库塔法简介 龙格-库塔法(Runge-Kutta method)是一种常用的数值解微分方程的方法,由德国数学家卡尔龙格(Carl Runge)和马丁威尔海尔姆库塔(Martin Wilhelm Kutta)在20世纪…

Windows11下 Visual Studio 2022 + Qt6 的 WebSocket 线程池异步 客户端

Windows11下 Visual Studio 2022 + Qt6 的 WebSocket 线程池异步 客户端 1 开发 WebSocket 客户端1.1 开发环境1.1.1 为Qt 6安装 websockets1.2 .基于Qt6的 QWebSocket 客户端示例1.2.1 实现 WebSocket 客户端1.2.2 创建 QtQWesocketClient1.2.3 创建QWebsocket对象1.2.3.1 添加…

轻松实现人声与伴奏分离,轻松获取纯净音质

SpleeterGui是一款用于人声与伴奏分离的开源软件,基于Python的Spleeter库开发而成。SpleeterGui支持的操作系统包括Windows、macOS和Linux,用户可以根据自己的需求选择合适的版本进行下载和使用。 使用教程 1、解压 人声伴奏分离软件-SpleeterGUI_2.9.5…

前端必知必会-html实体与保留字转换和符号

文章目录 HTML 实体HTML 字符实体一些有用的 HTML 字符实体HTML 符号HTML 符号实体数学符号希腊字母其他一些实体总结 HTML 实体 HTML 中的保留字符必须用实体替换&#xff1a; <&#xff08;小于&#xff09; < >&#xff08;大于&#xff09; >HTML 字符实体 …

C#体检系统源码,医院健康体检系统PEIS,C#+VS2016+SQLSERVER

体检中心/医院体检科PEIS系统源码&#xff0c;C#健康体检信息系统源码&#xff0c;PEIS源码 开发环境&#xff1a;C/S架构C#VS2016SQLSERVER 2008 检前&#xff1a; 多种预约方式网站预约、电话预约、微信平台预约及检前沟通&#xff0c;提前制作套餐&#xff0c;客人到达体检…

内网穿透的应用-中文版个人知识库Trilium笔记本地安装结合内网穿透远程协作

文章目录 前言1. 安装docker与docker-compose2. 启动容器运行镜像3. 本地访问测试4.安装内网穿透5. 创建公网地址6. 创建固定公网地址 前言 今天和大家分享一款在G站获得了26K的强大的开源在线协作笔记软件&#xff0c;Trilium Notes的中文版如何在Linux环境使用docker本地部署…

使用 WeNet 训练 AISHELL-1 模型的详细入门指南

使用 WeNet 训练 AISHELL-1 模型的详细入门指南 在这篇文章中&#xff0c;我们将通过 WeNet 框架详细介绍如何训练 AISHELL-1 数据集的语音识别模型。我们将逐步解释各个阶段的操作&#xff0c;适合初学者入门。 1. 环境准备 1.1 安装miniconda miniconda官网 1. 获取下载链…

【Dash】Dash模块介绍

什么是Dash&#xff1f; Dash 是一个开源的 Python 框架&#xff0c;用于创建基于 Web 的应用程序。它由 Plotly 公司开发&#xff0c;专为数据科学家和分析师设计&#xff0c;以便他们可以构建自定义的数据可视化 Web 应用程序&#xff0c;而无需具备前端开发知识。Dash 提供…

Scrapy 爬取旅游景点相关数据(五)

本期内容&#xff1a;&#xff08;1&#xff09;爬取日本其他城市数据存入数据库&#xff08;2&#xff09;爬取景点评论数据 1 爬取其他城市景点数据 只爬取一个城市的数据对于做数据可视化系统可能是不够的&#xff0c;因为数据样本量少嘛&#xff0c;本期来爬取其他城市的景…

Qt之详解QPainter

文章目录 前言QPainter 是干什么的如何使用 QPainter在哪个函数使用 QPainter为什么要在这里使用 QPainter最简单的示例代码 QPainter 函数构造函数与析构函数QPainter()QPainter(QPaintDevice *device)~QPainter() 初始化和结束绘图bool begin(QPaintDevice *device)bool end(…

x-cmd pkg | yazi - 超快终端文件管理器

目录 简介快速入门功能特点竞品和相关项目进一步阅读 简介 yazi 是由 github.com/sxyazi 用 Rust 开发的终端文件管理器&#xff0c;支持预览文本文件、pdf 文件、图像、视频&#xff0c;内置代码高亮功能。在内部&#xff0c;它使用 Tokio 作为其异步运行时&#xff0c;以非阻…

【百度超级智能体】零代码构建趣味语言游戏:秋日寻宝知识问答

前言 文心智能体平台AgentBuilder是由百度推出的一个创新平台&#xff0c;该平台基于其先进的文心大模型。这个平台旨在帮助开发者根据各自的专业领域和应用场景&#xff0c;以灵活多样的开发方法构建定制化的智能体&#xff08;Agent&#xff09;。通过简单易用的prompt编排功…

详解Qt 定时器QTimer

文章目录 前言QTimer 是什么什么时候使用 QTimer定时器时间到了调用什么函数 QTimer 的所有函数构造函数与析构函数QTimer(QObject *parent nullptr) 基本操作void start(int msec)void start()void stop()bool isActive() const 定时器属性void setInterval(int msec)int int…

瑞芯微平台RK3568系统开发(1)安卓环境搭建

1 开发环境搭建 注意: 重要&#xff01;重要&#xff01;重要&#xff01;自己编译后的固件&#xff0c; 必须先确认io_domains(4.2章节)后&#xff0c;才可以下载到板子运行&#xff0c; 否则可能造成烧坏RK3568的情况。 1.1 更新系统 ~$ sudo apt-get update 1.2 安装依…

MATLAB多元函数梯度下降法找最小值-梯度演示-绘制梯度方向

如果海森矩阵在所有可能的参数值上都是正定的&#xff0c;则该函数是凸的&#xff1b;函数将呈现为光滑的碗状&#xff0c;使得训练过程相对简单。存在单 一的全局最小值&#xff0c;不会有局部最小值或鞍点。 沿着梯度方向&#xff0c;函数变化最快。 x&#xff0c;y点的更新…

LNMP动态网站环境部署

1、LINUX部署 stop firewallddisable selinux 2、Nginx部署 ​ vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.…

Java 多线程编程核心技术权威指南(电子版教程)

前言 Java多线程编程是现代软件开发中不可忽视的关键技术&#xff0c;它能有效利用多核处理器的计算能力&#xff0c;实现并发执行&#xff0c;提升系统性能和响应速度。本篇博客将带您深入了解Java线程的核心概念、高级用法以及并发编程中的常见问题与解决方案。无论您是Java…

前端web开发HTML+CSS3+移动web(0基础,超详细)——第1天

一、开发坏境的准备 1&#xff0c;在微软商店下载并安装VS Code 以及谷歌浏览器或者其他浏览器&#xff08;我这里使用的是Microsoft Edge&#xff09; 2&#xff0c;打开vs code &#xff0c;在电脑桌面新建一个文件夹命名为code&#xff0c;将文件夹拖拽到vs code 中的右边…