关于Laravel-admin的基础用法总结和自定义model详解


Posted in PHP onOctober 08, 2019

总结laravel-admin展示用到的基本方法

基础用法

自定义model

当列表数据获取有特定条件或自己写ORM方法时可以用到,支持排序
$grid->model()->select('id','name')->where('status',1)->groupBy('project_id');
$grid->model()->select('id','name')->where('status',1)->groupBy('project_id');
//结合having 查出名字重复的
$grid->model()->select('name_en')->groupBy('name_en')->havingRaw('count(name_en)>1')
//嵌套子查询 查出名字重复的全部信息
$grid->model()->select('id','name_en')->whereIn('name_en',Project::select('name_en')->groupBy('name_en')->havingRaw('count(name_en)>1'))->orderBy('name_en');

模型数据获取

第一列显示id字段,并将这一列设置为可排序列

$grid->id('ID')->sortable();

获取单列数据的方法

$grid->name_cn('名称');

注:name_cn为与数据库对应的字段名

$grid->column('name_cn','名称');

判断type来显示不同的状态

$grid->column('type','类型?')->display(function ($type) {
 return $type == 1 ? '111' : '222';
});

where条件

$grid->model()->where('type', 0);

三个时间的显示

// 下面为三个时间字段的列显示
$grid->release_at();
$grid->created_at();
$grid->updated_at();

筛选框控制方法

基本方法

//filter($callback)方法用来设置表格的简单搜索框
 $grid->filter(function ($filter) {
  //1.时间段筛选 设置created_at字段的范围查询
  $filter->between('created_at', '筛选时间')->datetime();
  //2.字段模糊查询 like = '% %'
  $filter->like('name', '姓名');
  //3.字段equal 筛选
  $filter->equal('status', '状态')->select([0 => '下线', 1 => '上线']);
  //4.去掉默认的ID搜索
  $filter->disableIdFilter();
  //5.

 });

按钮控制

禁用导出

$grid->disableExport();

禁用新增

$grid->disableCreateButton();

禁用行选择checkbox

$grid->disableRowSelector();

去掉重置 [from]

$form->disableReset();

关闭默认行操作

$grid->actions(function ($actions) {
  //关闭删除
 $actions->disableDelete();
 //关闭编辑
 $actions->disableEdit();
 //自定义操作按钮
 $actions->append('<button type="button" class="btn btn-danger noShow" data-id="' . $actions->getKey() . '" >隐藏</button>');
});

关闭批量删除

$grid->tools(function ($tools) {
 //关闭批量删除
 $tools->batch(function ($batch) {
  $batch->disableDelete();
 });
});

FORM表单提交

禁用重置按钮

$form->disableReset();

文本输入框

//默认展示$data['name']的值,新接收的值存储user表name字段
$form->text('user.name', '名称')->default($data['name']);

上传图片/文件

$form->image('user.logo', 'logo')
    #随机文件名
    ->uniqueName()
    #验证文件格式('mimes:doc,docx,xlsx');
    ->rules('mimes:png')
    #输入框下边的help提示语
    ->help($str);

表单提交url

$form->url('user.website', '官网')
    #默认填充url 传参
    ->default($url)
    #提示的url
    ->help('eg: http://www.aware.bi');

表单提交下拉框

#下拉框展示$message提示语
$form->multipleSelect('project.tags1', $message)
    #下拉框数据
    ->options($tags['children']);

select下来

$types = array('0'=>'教育','1'=>'医疗');
$form->select('type', '类型')->options($types);

laravel SQL取值

$users = User::all()->pluck('name', 'id')->toArray();

表单输入HTML editor编辑器

$form->editor('detail', '详细介绍');

单选按钮 样式转换

$states = [
 'on' => ['value' => 1, 'text' => '上线', 'color' => 'success'],
 'off' => ['value' => 0, 'text' => '下线', 'color' => 'danger'],
];
$form->switch('status', '上/下线')->states($states);

隐藏域

$form->hidden('is_in');

保存数据的回调

$form->saving(function (Form $form) {
 #指定值为固定1
 $form->is_in = 1;
 #验证值是够有重复
 if($from->nick_name !== $form->model()->email && User::where('email',$form->email)->value('id')){
 #错误信息提示
 $error = new MessageBag(['title'=>'提示','message'=>'邮箱已存在!']);
  return back()->withInput()->with(compact('error'));
 }
});

自定义按钮操作

我们先自定义了一个隐藏按钮

$grid->actions(function ($actions) {
 //自定义操作按钮
 $actions->append('<button type="button" class="btn btn-danger noShow" 
 data-id="' . $actions->getKey() . '" >隐藏</button>');
 //当前数据的ID
});

在controller写JS文件把执行JS渲染到模板

$js = <<<EOD
   <script>
   //隐藏的点击事件
$(document).on('click', '.noShow', function() {
 //获取的ID
 var id = $(this).data('id');
  console.log(id);
 swal({
  title: "确认隐藏?",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "确认",
  closeOnConfirm: false,
  cancelButtonText: "取消"
 },
 function(){
  $.ajax({
   method: 'post',
   url: '/admin/articles/hidden',
   data: {
    //文章ID
    id:id,
    //post请求token
    _token:LA.token,
   },
   success: function (data) {
    $.pjax.reload('#pjax-container');
    if (typeof data === 'object') {
     if (data.status == 1) {
      swal(data.msg, '', 'success');
     } else {
      swal(data.msg, '', 'error');
     }
    }
   }
  })
 }
 )
});
   </script>
EOD;
   //传递到页面
   $content->body($js);
   //执行你的model
   $content->body();

以上这篇关于Laravel-admin的基础用法总结和自定义model详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP安装攻略:常见问题解答(二)
Oct 09 PHP
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
浅谈php和.net的区别
Sep 28 PHP
一个经典的PHP验证码类分享
Nov 18 PHP
Thinkphp中的curd应用实用要点
Jan 04 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 #PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 #PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 #PHP
PHP7 安装event扩展的实现方法
Oct 08 #PHP
thinkphp5+layui实现的分页样式示例
Oct 08 #PHP
调试php程序的简单步骤
Oct 04 #PHP
用php定义一个数组最简单的方法
Oct 04 #PHP
You might like
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
Puppet的一些技巧
2018/09/17 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
js 动态校验开始结束时间的实现代码
2020/05/25 Javascript
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
2020/08/19 Python
jupyter 添加不同内核的操作
2021/02/06 Python
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
父亲八十大寿答谢词
2014/01/23 职场文书
政风行风评议工作总结
2014/10/21 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL