php框架dcat-admin速查笔记

要想灵活的使用dcat-admin框架开发,必须知道框架有哪些类提供给我们使用.
每一个自定义的按钮,弹框,信息展示,小组件都用到特定的类和接口.

常用核心类

Dcat\Admin\Http\Controllers\AdminController 需要继承的公共控制器
Dcat\Admin\Layout\Content 布局核心
Dcat\Admin\Grid 表格列表页面
Dcat\Admin\Form 表单页面
Dcat\Admin\Show 详情页面
Dcat\Admin\Grid\RowAction 扩展行操作
其中Dcat\Admin\FormDcat\Admin\Show实现了Illuminate\Contracts\Support\Renderable 接口

laravel 常用类

Illuminate\Http\Request 接收请求参数$request,定义此类
Illuminate\Support\Facades\DB

布局常用类

布局用的 行row 和 列column
用php代码构建多行多列的布局就需要用到
Dcat\Admin\Layout\Column
Dcat\Admin\Layout\Row

$content->row(function (Row $row) {$row->column(4, 'foo');$row->column(8, function (Column $column) {$column->row('111');$column->row('222');$column->row('333');});});

常用方法

view() 模板调用
Admin:script() 控制器里加载js代码

控制器

public function index(Content $content)
{$content->header('填写页面头标题');$content->description('填写页面描述小标题');// 添加面包屑导航$content->breadcrumb(['text' => '首页', 'url' => '/admin'],['text' => '用户管理', 'url' => '/admin/users'],['text' => '编辑用户']);// 填充页面body部分,这里可以填入任何可被渲染的对象$content->body('hello world');$content->body('hello world2');
}

数据表格的各个按钮控制

$grid->disableActions(); 禁用操作按钮
$grid->disableEditButton(); 禁用编辑操作
$grid->disableDeleteButton(); 禁用删除操作
$grid->disableBatchActions(); 禁用批量操作
$grid->disableBatchDelete(); 禁用批量删除操作
$grid->disableToolbar(); 禁用工具栏
$grid->disableRefreshButton(); 禁用刷新按钮
$grid->disablePagination(); 禁用分页
$grid->paginate(15); 设置分页大小

普通组件

都用make生成组件实例.

  1. Dcat\Admin\Widgets\Card 卡片
  2. Dcat\Admin\Widgets\Box Box
  3. Dcat\Admin\Widgets\Dropdown 下拉菜单
  4. Dcat\Admin\Widgets\Radio 单选框
  5. Dcat\Admin\Widgets\Checkbox 复选框
  6. Dcat\Admin\Widgets\Tab 选项卡
  7. Dcat\Admin\Widgets\Alert 警告框
    $alert = Alert::make(‘内容’, ‘标题’);
    $alert->success();
  8. Dcat\Admin\Widgets\Tooltip 提示框
  9. Dcat\Admin\Widgets\Markdown 渲染markdown

以上是简单的展示信息组件.无过多的交互

  1. Dcat\Admin\Widgets\Modal 模态窗,弹窗
    模态窗口内可以渲染 文字,模板,普通组件,异步组件,非异步组件, 工具表单,动作组件 等等内容
    开发交换功能.

图表和数据统计卡片

Dcat Admin 引入了 apexcharts 图表功能,
Dcat\Admin\Widgets\ApexCharts\Chart 这个类可以帮助开发者快速渲染图表。
Dcat\Admin\Widgets\Metrics\Card 数据统计卡片

特殊组件

  1. Dcat\Admin\Widgets\Form 工具表单组件
    例如: 行操作上,点击修改用户密码,弹出表单填写新密码.
    Dcat\Admin\Contracts\LazyRenderable 异步加载接口
  2. 传递自定义参数
    Dcat\Admin\Traits\LazyWidget 异步组件的traits,含有payload()方法 ,
    可在传入payload数据,工具表单的各个方法里调用payload数据
<?phpnamespace App\Admin\Forms;use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;class UserProfile extends Form implements LazyRenderable
{use LazyWidget;public function handle(array $input){// 获取外部传递的参数$key1 = $this->payload['key1'] ?? null;$key2 = $this->payload['key1'] ?? null;return $this->success('保存成功');}public function form(){// 获取外部传递的参数$key1 = $this->payload['key1'] ?? null;$key2 = $this->payload['key1'] ?? null;$this->text('name', trans('admin.name'))->required()->help('用户昵称');$this->image('avatar', trans('admin.avatar'))->autoUpload();$this->password('old_password', trans('admin.old_password'));$this->password('password', trans('admin.password'))->minLength(5)->maxLength(20)->customFormat(function ($v) {if ($v == $this->password) {return;}return $v;})->help('请输入5-20个字符');$this->password('password_confirmation', trans('admin.password_confirmation'))->same('password')->help('请输入确认密码');}public function default(){// 获取外部传递的参数$key1 = $this->payload['key1'] ?? null;$key2 = $this->payload['key1'] ?? null;return ['name' => '...',];}
}
  1. 异步加载
    Dcat\Admin\Support\LazyRenderable 异步渲染接口
    异步加载功能支持静态资源按需加载的特性,
    目前内置的所有组件都支持使用异步渲染功能,
    并且支持在页面的任意位置中使用
    通过异步加载功能可以让页面中的整体或局部组件使用 ajax 异步渲染,
    从而提高页面加载效率(例如弹窗异步加载表单)。

步骤: 见文档的 页面组件->异步加载
1.先定义一个异步渲染类,继承 Dcat\Admin\Support\LazyRenderable
2.然后需要把渲染类实例传入 Dcat\Admin\Widgets\Lazy 对象中,才能最终实现异步渲染的效果

namespace App\Admin\Renderable;use App\Admin\Widgets\Charts\Bar;
use Dcat\Admin\Support\LazyRenderable;class PostChart extends LazyRenderable
{public function render(){// 获取外部传递的参数$id = $this->id;// 查询数据逻辑$data = [...];// 这里可以返回内置组件,也可以返回视图文件或HTML字符串return Bar::make($data);}
}

控制器里$chart = PostChart::make(['id' => ...]); return $content->body(Lazy::make($chart));
或者模板里调用

$chart = Lazy::make(PostChart::make(['id' => ...]));
return $content->body(view('admin.xxx', ['chart' => $chart]));

如果是 Dcat\Admin\Widgets\Card、Dcat\Admin\Widgets\Box、Dcat\Admin\Widgets\Modal、Dcat\Admin\Widgets\Tab 等组件,则可以略过 Dcat\Admin\Widgets\Lazy 组件,直接传递渲染类实例

$chart = PostChart::make(['id' => ...]);
$modal = Modal::make()->lg()->title('标题')->delay(300) // 如果是异步渲染图表则需要设置一个延迟时间,否则可能导致图表渲染异常->body($chart);

异步加载数据表格

弹窗,异步展示数据表格

如果需要异步加载数据表格,则定义渲染类时需要继承 Dcat\Admin\Grid\LazyRenderable
Dcat\Admin\Grid\LazyRenderable 用于异步渲染数据表格,是 Dcat\Admin\Support\LazyRenderable 的子类

简化模式 - 去除简化一些数据表格默认开启的功能,默认不启用
$table = UserTable::make()->simple(); return $content->body(LazyTable::make($table));

注意,如果把渲染类实例直接注入到 Dcat\Admin\Widgets\Card、Dcat\Admin\Widgets\Box、Dcat\Admin\Widgets\Tab 和 Dcat\Admin\Widgets\Modal 等组件时,则会自动启用 simple 模式

//监听异步加载完成事件
Dcat\Admin\Widgets\Lazy
Dcat\Admin\Widgets\LazyTable
参考工具表单

传递自定义参数
Dcat\Admin\Traits\LazyWidget 异步组件的traits,含有payload()方法 ,
可在传入payload数据,工具表单的各个方法里调用payload数据

//调用异步组件传递参数
$form = UserProfile::make()->payload(['key1' => '...', 'key2' => '...']);//组件内使用传入的参数
namespace App\Admin\Forms;use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;class UserProfile extends Form implements LazyRenderable
{use LazyWidget;public function handle(array $input){// 获取外部传递的参数$key1 = $this->payload['key1'] ?? null;$key2 = $this->payload['key1'] ?? null;return $this->success('保存成功');}
}

异步工具表单

定义工具表单类,实现 Dcat\Admin\Contracts\LazyRenderable,并载入 Dcat\Admin\Traits\LazyWidget 这个 trait

动作Action

开发者通过 Action 动作类可以非常方便的开发出一个含有特定功能的操作,可以非常方便的让用户与服务器产生交互。

展示一个按钮,点击按钮可以有一些操作,例如弹出页面,打开链接,下载文件,刷新页面,删除数据,执行js代码,确认弹窗 ,等等操作.

例如,页面上需要一个按钮,用户点击之后可以向服务器发起请求,通过弹窗展示当前登录用户的信息,那么这个功能按钮就可以用 Action 来开发。

php artisan admin:action 创建action类
动作分为了好几种, 数据表格动作,数据表单动作,数据详情动作,树状模型动作, 通用动作.

Dcat\Admin\Actions\Action 动作基类
Dcat\Admin\Grid\GridAction 数据表格动作基类,在数据表格页面调用.
Dcat\Admin\Grid\Tools\BatchAction 批量操作按钮基类
Dcat\Admin\Grid\Tools\RowAction 行操作按钮基类
Dcat\Admin\Form\AbstractTool 数据表单动作基类,在数据表单页面调用
Dcat\Admin\Show\AbstractTool 数据详情动作基类,在数据详情页面调用
Dcat\Admin\Tree\RowAction 模型树动作基类,在树状模型页调用
不同类是在不同地方使用的.

动作响应:
$this->response()->success(‘Processed successfully.’)->refresh();

模板里

js

<script>
// 用 Dcat.ready() 代替 $()
// 此方法会在所有 js 脚本加载完成后执行
Dcat.ready(function () {// 写入你的 js 代码console.log('所有 js 脚本加载完毕啦~~');
});
</script>

bootstrap

颜色

.text-primary
.text-secondary
.text-success
.text-danger
.text-warning
.text-info
.text-light
.text-dark
.text-body
.text-muted
.text-white
.text-black-50
.text-white-50
更多bootstrap文档资料
https://getbootstrap.net/docs/utilities/borders/

AdminLTE还带了一些dcat-admin没有写的其他组件,可以照着案例复制
https://3vshej.cn/AdminLTE/AdminLTE-3.x/pages/UI/timeline.html

表单验证

Dcat Admin 集成了 bootstrap-validator 组件用于表单前端验证的功能,
Dcat Admin 集成了 sweetalert2 弹窗插件
Dcat Admin 集成了 Toastr 提示框插件

权限

Admin::user(); 当前用户对象
Admin::user()->id 当前用户id
Admin::user()->roles; 用户角色
Admin::user()->permissions; 用户的权限
Admin::user()->isRole('developer');用户是否有某个角色
Admin::user()->can('create-post');是否有某个权限
Admin::user()->cannot('delete-post'); 是否没有某个权限
Admin::user()->isAdministrator();
Admin::user()->inRoles(['editor', 'developer']);// use Dcat\Admin\Http\Auth\Permission;
// 检查权限,有create-post权限的用户或者角色可以访问创建文章页面
Permission::check('create-post');

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

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

相关文章

c语言-数据在内存中的存储

文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断3. 浮点数在内存中的存储 1. 整数在内存中的存储 1.整数的2进制表示方法有三种&#xff0c;即 原码、反码和补码 2. 三种表示方法均有符号位和数值位两部分&#xff0c;符号位都是用0表示“正”&#xff0c;用1表示“…

前端下载文件或者图片方式,window.open或者a标签形式

首先分别讲一下下载文件的方式都有哪些 1.通过a标签的方式下载文件 <a href"http://www.baidu.com" download"baidu.html">下载</a> 我们点击下载&#xff0c;发现是跳转到了百度的首页&#xff0c;并没有真的下载文件。 因为a标签下载只能…

[Java][单列集合+数组遍历方法]通过Lambda表达式简化匿名内部类遍历数组学习体会

在分享本文之前&#xff0c;我们需要先了解两种思想——面向对象式编程与函数式编程思想 面向对象编程和函数式编程是两种不同的编程范式&#xff0c;它们的思想和实现方式有很大的差异。可以将它们比作两种不同的制作蛋糕的方式&#xff1a; 面向对象编程就像是在制作一个三…

客服管理者如何有效管理客服团队,有哪些高效方式?

在如今的市场竞争中&#xff0c;客户服务是企业成功的关键因素之一。因此&#xff0c;客服团队的有效管理至关重要。客服管理者需要了解如何有效地管理客服团队&#xff0c;以确保客户的满意度和忠诚度&#xff0c;从而提高企业的竞争力。 以下是客服管理者如何有效管理客服团队…

CSS特效020:涌动的弹簧效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

206. 反转链表

206. 反转链表 题目&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例&#xff1a; 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1…

【Openstack Train安装】六、Keystone安装

OpenStack是一个云计算平台的项目&#xff0c;其中Keystone是一个身份认证服务组件&#xff0c;它提供了认证、授权和目录的服务。其他OpenStack服务组件都需要使用Keystone来验证用户的身份和权限&#xff0c;并且彼此之间需要相互协作。当一个OpenStack服务组件接收到用户的请…

绿色积分如何拉伸经济发展?场景适用何处?

一、引言 绿色积分发展政策是一种新兴的商业模式&#xff0c;它旨在通过积分奖励的方式鼓励消费者和企业采取环保行为&#xff0c;促进绿色消费和可持续发展。这种商业模式不仅有利于环境保护&#xff0c;也有利于提高消费者和企业的参与度和粘性&#xff0c;为商业模式的创新和…

C++: String类接口学习

文章目录 STL简介一. 为什么要有string类二. STL 中的 string 类介绍1. string 类描述2. 关于 basic_string 三. string 类的常用接口1. string 类的常见构造2. string 类的容量操作size 和 lengthcapacitymax_sizereserveresize 3. string 类对象的访问及遍历操作operator[] 和…

网站公安备案流程

1.公安备案网址 https://beian.mps.gov.cn/ 选择用户登录->法人用户登录 左边的码下载APP&#xff0c;登上去之后用APP扫右边的码&#xff0c;人脸识别

mysql子查询及其子查询的合并

表结构为 表名 notice 游戏类型 n_type(斗地主1、斗地主2、斗地主3) 资讯 n_news (新闻、活动、公告) 时间 n_time 需求 查询notice表中游戏类型为“斗地主1”的最新一条新闻、最新一条活动、最新一则公告&#xff0c;只能使用一条sql语句 思路 查询分为三个部分&am…

Python三级 每周练习题28

如果你感觉有收获&#xff0c;欢迎给我微信扫打赏码 ———— 以激励我输出更多优质内容 题目: 1.运行hex(),得到 xa&#xff0c;括号里面填什么? 2.十六进制数100&#xff0c;对应10进制数是多少? 3.int(‘13’,8) 返回值是? 4.int(‘100010’,2) 返回值是? 5.int(‘2af…

强基固本,红海云数字化重塑提升国企干部管理能力

国有企业的干部管理体系建设具有重要的战略意义&#xff0c;对于构建高素质专业化的干部队伍&#xff0c;推动企业高质量发展至关重要。特别是在党的二十大以后&#xff0c;建设中国特色现代企业制度&#xff0c;在完善公司治理中加强党的领导&#xff0c;加强党管干部党管人才…

C# 调用 c++ dll

C# 调用 c dll 首先 c 库 dll 要定义 代码中定义 CPP_EXPORTS #ifdef LASERSDK_EXPORTS #define CPP_EXPORTS __declspec(dllexport) #else #define CPP_EXPORTS __declspec(dllimport) #endif编译器定义 LASERSDK_EXPORTS 普通函数 c extern "C" CPP_EXPORTS …

ucharts中,当数据为0时,不显示

当为0时&#xff0c;会显示出来&#xff0c;值比较小的时候&#xff0c;数据会显示在一起&#xff0c;不美观 期望效果&#xff1a; 实现步骤&#xff1a; 我是将uCharts插件下载导入到src/uni_modules下的 1、修改src/uni_modules/qiun-data-charts/js_sdk/u-charts/confi…

【漏洞复现】OpenTSDB 2.4.0 命令注入(CVE-2020-35476)漏洞复现

漏洞描述 官方文档这样描述:OpenTSDB is a distributed, scalable Time Series Database (TSDB) written ontop of HBase; 翻译过来就是,基于Hbase的分布式的,可伸缩的时间序列数据库。 主要用途,就是做监控系统;譬如收集大规模集群(包括网络设备、操作系统、应用程序…

有趣的代码——猜数字游戏的实现

前面介绍过很多的C语言常识&#xff0c;但是我们都知道“兴趣是最好的老师”&#xff0c;所以&#xff0c;今天我们用之前讲过的一些知识&#xff0c;加上部分新补充的知识点&#xff0c;写一个“猜数字”的小游戏&#xff0c;来丰富我们的编程学习生活&#xff0c;感受来自C语…

Java高级技术(反射:获取类的构造器)

一&#xff0c;常用方法 二&#xff0c;案例 &#xff08;1&#xff09;&#xff0c;获取全部构造器 &#xff08;2&#xff09;&#xff0c;获取某个构造器 &#xff08;3&#xff09;&#xff0c;实验类 三&#xff0c; 初始化对象 四&#xff0c;案例

分析SSH登录尝试的日志文件,如果某个IP地址失败次数超过5次,加入黑名单

防止暴力破解脚本 这个脚本的主要目的是查找/var/log/secure日志文件中包含"Failed"的行&#xff0c;并统计每个IP地址失败的次数。如果某个IP地址失败的次数大于5&#xff0c;则将该IP地址添加到/etc/hosts.deny文件中&#xff0c;以禁止该IP地址访问sshd。 脚本需…

【2023.11.29】2-路归并排序学习

代码&#xff1a; ​ #include <iostream> #define MAXSIZE 1000 using namespace std;typedef struct {int key;char* otherinfo; }RedType;typedef struct {RedType* r;int length; }SqList;void Create_Sq(SqList& L) {int i, n;cin >> n; //输入的值不…