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,],

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3前端开发-小兔鲜项目-登录组件的开发表单验证

vue3前端开发-小兔鲜项目-登录组件的开发表单验证&#xff01;现在开始写登录页面的内容。首先这一次完成基础的首页按钮点击跳转&#xff0c;以及初始化一些简单的表单的输入验证。后期还会继续完善内容。 1&#xff1a;首先还是准备好login页面的组件代码内容。 <script …

MySQL基础练习题7-销售分析

题目&#xff1a;报告 2019年春季 才售出的产品。即 仅 在 2019-01-01 &#xff08;含&#xff09;至 2019-03-31 &#xff08;含&#xff09;之间出售的商品。 准备数据 分析数据 方法一&#xff1a;group by having 第一步&#xff1a;先找到要求的列 第二步&#xff1…

CAN转PROFINET网关

型号&#xff1a;TCA-152 &#xff08;上海泗博自动化技术有限公司产品&#xff09; 基本说明&#xff1a;TCA-152可实现 PROFINET网络与CAN网络之间的数据通信。网关在PROFINET网络作为从站&#xff0c;CAN端支持CAN2.0A/CAN2.0B协议&#xff0c;支持对CAN帧进行过滤处理。 …

python 图片转文字、语音转文字、文字转语音保存音频并朗读

一、python图片转文字 1、引言 pytesseract是基于Python的OCR工具&#xff0c; 底层使用的是Google的Tesseract-OCR 引擎&#xff0c;支持识别图片中的文字&#xff0c;支持jpeg, png, gif, bmp, tiff等图片格式 2、环境配置 python3.6PIL库安装Google Tesseract OCR 3、安…

谷粒商城实战笔记-65-商品服务-API-品牌管理-表单校验自定义校验器

文章目录 1&#xff0c;el-form品牌logo图片自定义显示2&#xff0c;重新导入和注册element-ui组件3&#xff0c;修改brand-add-or-update.vue控件的表单校验规则firstLetter 校验规则sort 校验规则 1&#xff0c;el-form品牌logo图片自定义显示 为了在品牌列表中自定义显示品…

最新源支付系统源码 V7版全开源 免授权 附搭建教程

本文来自&#xff1a;最新源支付系统源码 V7版全开源 免授权 附搭建教程 - 源码1688 简介&#xff1a; 最新源支付系统源码_V7版全开源_免授权_附详细搭建教程_站长亲测 YPay是专为个人站长打造的聚合免签系统&#xff0c;拥有卓越的性能和丰富的功能。它采用全新轻量化的界面…

商场导航系统:从电子地图到AR导航,提升顾客体验与运营效率的智能解决方案

商场是集娱乐、休闲、社交于一体的综合性消费空间&#xff0c;随着商场规模的不断扩大和布局的日益复杂&#xff0c;顾客在享受丰富选择的同时&#xff0c;也面临着寻路难、店铺曝光率低以及商场管理效率低下等挑战。商场导航系统作为提升购物体验的关键因素&#xff0c;其重要…

堆的基本实现

一、堆的概念 在提出堆的概念之前&#xff0c;首先要了解二叉树的基本概念 一颗二叉树是节点的有限集合&#xff0c;该集合&#xff1a; 1、或者为空&#xff1b; 2、或者由一个根节点加上两颗分别称为左子树和右子树的两颗子树构成&#xff1b; 堆就是一颗完全二叉树&…

mybatis-plus实现分页功能

第一步&#xff1a;添加mybatis-plus为分页所使用的拦截器插件 &#xff08;不用这个的话sql里面的limit关键字无法实现&#xff0c;也就没办法实现查询操作&#xff09; 代码&#xff1a; Configuration public class mybatis_plus_config {Beanpublic MybatisPlusIntercept…

python-数水果(赛氪OJ)

[题目描述] 已知水果的种类共有 M 种&#xff0c;给出长度为 N 的序列&#xff0c;每个数字表示的是它是哪种水果。求每种水果各有多少个&#xff0c;按照对应编号从小到大的顺序输出。输入&#xff1a; 输入共两行&#xff1a;第一行包含两个整数 N,M(1 < N,M < 10000)&…

解决Firefox代理身份验证弹出窗口问题:C#和Selenium实战指南

引言 在使用Selenium和C#进行网页抓取时&#xff0c;遇到代理服务器的身份验证弹出窗口是一个常见的问题。这不仅会中断自动化流程&#xff0c;还会导致抓取任务失败。本文将提供一个实战指南&#xff0c;帮助开发者解决这个问题&#xff0c;并介绍如何在代码中设置代理IP、Us…

x-cmd mod | x man - man 命令增强

目录 简介例子1. 使用 fzf 列出当前系统上所有的 man 文档2. 显示 ssh 的 man 文档。如果不存在则显示搜索3. 显示 ssh 的 tldr 文档4. 使用交互式 UI 列出包含 "disk" 的 man 文档 使用选项子命令x man --explainx man --fzf 简介 man 模块的主要目的是提升用户查找…

【TypeScript学习打卡第一天】

介绍、常用类型 一、介绍1.概念2.TypeScript 为什么要为 JS 添加类型支持&#xff1f;3.ts的优势 二、ts初体验1.安装编译 TS 的工具包2.编译并运行 TS 代码3.简化运行 TS 的步骤 三、常用类型1.类型注解2.常用基础类型概述(1) 原始类型(2) 数组类型(3) 联合类型(4) 类型别名(5…

第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024,9月13-15)

第三届人工智能、物联网与云计算技术国际会议(AIoTC 2024)将于2024年9月13日-15日在中国武汉举行。 本次会议由华中师范大学伍伦贡联合研究院与南京大学联合主办、江苏省大数据区块链与智能信息专委会承办、江苏省概率统计学会、江苏省应用统计学会、Sir Forum、南京理工大学、…

JDK新特性(Lambda表达式,Stream流)

Lambda表达式&#xff1a; Lambda 表达式背后的思想是函数式编程&#xff08;Functional Programming&#xff09;思想。在传统的面向对象编程中&#xff0c;程序主要由对象和对象之间的交互&#xff08;方法调用&#xff09;构成&#xff1b;而在函数式编程中&#xff0c;重点…

postman给全部接口添加请求头数据(如token)

如果给没有一个接口添加请求头token就太慢了&#xff0c;如下图。可以点击所有接口的所属的目录。点击“Scripts”&#xff0c;点击Pre-request按钮。加入代码&#xff1a; pm.request.addHeader("Authorization:eyJhbGciOiJIUzI1NiIsInR5cCI111pXVCJ9.eyJjbGFpbXMiOnsiaW…

Nginx负载均衡策略

upstream机制提供了负载均衡的功能,可以讲请求负载分担到集群服务器的某个服务器上 打包时候到时一个8085 一个8090 一个8095 nohup /usr/local/develop/jdk-17.0.10/bin/java -Xmx256m -Xms256m -jar nginx-demo-8085.jar > server8085.log 2>&1 & nohup /u…

56_Redis简单命令

一、引言 1.1 数据库压力过大 由于用户量增大&#xff0c;请求数量也随之增大&#xff0c;数据压力过大 一个请求的url 背后可能有有4-5个 sql的操作 每秒钟 qps&#xff08;并发数&#xff09; 1000 背后的sql操作 4000-5000mysql 单机并发量读写 8000-10000 &#x…

鸿蒙配置Version版本号,并获取其值

app.json5中配置版本号&#xff1a; 获取版本号&#xff1a; bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).then((bundleInfo) > {let versionName bundleInfo.versionName; //应用版本号}).catch((error: BusinessE…