当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-27 15:31:01 浏览: 评论:0 

今天小编就为大家分享一篇关于Laravel-admin的基础用法总结和自定义model详解,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

总结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来显示不同的状态

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

where条件

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

三个时间的显示

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

筛选框控制方法

基本方法

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

按钮控制

禁用导出

$grid->disableExport();

禁用新增

$grid->disableCreateButton();

禁用行选择checkbox

$grid->disableRowSelector();

去掉重置 [from]

$form->disableReset();

关闭默认行操作

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

关闭批量删除

  1. $grid->tools(function ($tools) { 
  2.  //关闭批量删除 
  3.  $tools->batch(function ($batch) { 
  4.   $batch->disableDelete(); 
  5.  }); 
  6. }); 

FORM表单提交

禁用重置按钮

$form->disableReset();

文本输入框

//默认展示$data['name']的值,新接收的值存储user表name字段

$form->text('user.name', '名称')->default($data['name']);

上传图片/文件

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

表单提交url

  1. $form->url('user.website''官网'
  2.     #默认填充url 传参 
  3.     ->default($url
  4.     #提示的url 
  5.     ->help('eg: http://www.phpfensi.com'); 

表单提交下拉框

  1. #下拉框展示$message提示语 
  2. $form->multipleSelect('project.tags1'$message
  3.     #下拉框数据 
  4.     ->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', '详细介绍');

单选按钮 样式转换

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

隐藏域

$form->hidden('is_in');

保存数据的回调

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

自定义按钮操作

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

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

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

  1.   $js = <<<EOD 
  2.   <script> 
  3.   //隐藏的点击事件 
  4. (document).on('click''.noShow'function() { 
  5. //获取的ID 
  6. var id = $(this).data('id'); 
  7.  console.log(id); 
  8. swal({ 
  9.  title: "确认隐藏?"
  10.  type: "warning"
  11.  showCancelButton: true, 
  12.  confirmButtonColor: "#DD6B55"
  13.  confirmButtonText: "确认"
  14.  closeOnConfirm: false, 
  15.  cancelButtonText: "取消" 
  16. }, 
  17. function(){ 
  18.  $.ajax({ 
  19.   method: 'post'
  20.   url: '/admin/articles/hidden'
  21.   data: { 
  22.    //文章ID 
  23.    id:id, 
  24.    //post请求token 
  25.    _token:LA.token, 
  26.   }, 
  27.   success: function (data) { 
  28.    $.pjax.reload('#pjax-container'); 
  29.    if (typeof data === 'object') { 
  30.     if (data.status == 1) { 
  31.      swal(data.msg, '''success'); 
  32.     } else { 
  33.      swal(data.msg, '''error'); 
  34.     } 
  35.    } 
  36.   } 
  37.  }) 
  38. ); 
  39.   </script> 
  40. OD; 
  41.   //传递到页面 
  42.   $content->body($js); 
  43.   //执行你的model 
  44.   $content->body();

Tags: Laravel-admin model

分享到: