关于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 相关文章推荐
实现“上一页”和“下一页按钮
Oct 09 PHP
杏林同学录(三)
Oct 09 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
基于empty函数的输出详解
Jun 17 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
Nov 05 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
laravel 框架实现无限级分类的方法示例
Oct 31 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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 Mysql日期和时间函数集合
2007/11/16 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
用python批量移动文件
2021/01/14 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
大学生个人总结的自我评价
2013/10/05 职场文书
法人代表委托书
2014/04/04 职场文书
2014年法务工作总结
2014/12/11 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
员工工作表现自我评价
2015/03/06 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
maven依赖的version声明控制方式
2022/01/18 Java/Android
把77A收信机改造成收音机
2022/04/05 无线电
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技