关于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 相关文章推荐
用PHP4访问Oracle815
Oct 09 PHP
PHP4和PHP5共存于一系统
Nov 17 PHP
php 执行系统命令的方法
Jul 07 PHP
php array的学习笔记
May 10 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
YII2框架中查询生成器Query()的使用方法示例
Mar 18 PHP
php7中停止php-fpm服务的方法详解
May 09 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生成自己的LOG文件
2006/10/09 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
jQuery ui 1.7更新小结
2009/08/15 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
初识Node.js
2015/03/20 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
利用JS实现数字增长
2016/07/28 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
python中遍历文件的3个方法
2014/09/02 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python机器学习之决策树分类详解
2017/12/20 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
生日邀请函范文
2014/01/13 职场文书
海洋科学专业求职信
2014/08/10 职场文书
反四风对照检查材料
2014/09/22 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python