关于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如何得到当前页和上一页的地址?
Nov 27 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
php引用传值实例详解学习
Nov 06 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
php生成图片验证码
Jun 09 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
php cookie 详解使用实例
Nov 03 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
Python算法应用实战之队列详解
2017/02/04 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
python 日期操作类代码
2018/05/05 Python
Python清空文件并替换内容的实例
2018/10/22 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
python轮询机制控制led实例
2020/05/03 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
python和js交互调用的方法
2020/06/23 Python
python3 re返回形式总结
2020/11/20 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
土木工程毕业生推荐信
2013/10/28 职场文书
高中自我鉴定
2013/12/20 职场文书
行政助理工作职责范本
2014/03/04 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
琅琊山导游词
2015/02/05 职场文书
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL