关于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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
MYSQL环境变量设置方法
Jan 15 PHP
php pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
使用symfony命令创建项目的方法
Mar 17 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
php计算给定日期所在周的开始日期和结束日期示例
Feb 06 PHP
php str_replace替换指定次数的方法详解
May 05 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
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
PHP如何使用Memcached
2016/04/05 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
js date 格式化
2017/02/15 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
文秘专业大学生求职信
2013/11/10 职场文书
车间主任岗位职责
2014/03/16 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
2014年个人总结范文
2015/03/09 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python