laravel-admin的多级联动方法


Posted in PHP onSeptember 30, 2019

laravel-admin的框架已经定义好的多级联动可以去官网查看,这里就不再进行赘述,但是使用中发现功能与想要的东西有些偏差,刚进来默认的时候不好用,就自己改了改,增加了一个默认的方法。

以城市和地区的二级联动为例,当我选择沈阳时,地区列表变成和平区、沈河区、铁西区等等,当我选择大连时显示瓦房店、甘井子等等

laravel-admin的多级联动方法

首先,按照laravel-admin的文档,在Model中添加

public function __construct(array $attributes = [])
 {
  parent::__construct($attributes);

  $this->setParentColumn('pid');
  $this->setOrderColumn('sort');
  $this->setTitleColumn('name');
 }

然后在form上添加城市和地区的select控件

protected function form()
 {
  return Admin::form(AreaModel::class, function (Form $form) {

   $form->text('name', '名称')->rules("required");
   $form->select('city_id','城市')->options(

    DealCityModel::selectOptionsNoRoot()

   )->load('pid', 'district')->loadOne('pid', 'district');//load方法是框架自带的,定义在vendor=>encore=>laravel-admin=>src=>Form=>Field=>Select文件中,loadone是自己写的,在后面会给出代码district为自己定义的方法,pid是根据城市的变化而变化的下拉列表框名称,也就是下面这个。

   $form->select('pid','地区')->options(array(0 =>'请选择地区'));

  });
 }

在from方法后面新建一个district方法

public function district(Request $request)
 {
  $cityId = $request->get('q');

  $list = AreaModel::where(['city_id' => $cityId, 'pid' => 0])->get(['id', DB::raw('name as text')]);

  foreach ($list as $key => $value) {

   $arr[] = array("id" => $value->id, "text" => $value->text);

  }

  return $arr;//返回数组到地区的option

 }

在vendor=>encore=>laravel-admin=>src=>Form=>Field=>Select文件里load方法后新建一个方法命名为loadone,代码如下:

public function loadOne($field, $sourceUrl, $idField = 'id', $textField = 'text')
 {
  if (Str::contains($field, '.')) {
   $field = $this->formatName($field);
   $class = str_replace(['[', ']'], '_', $field);
  } else {
   $class = $field;
  }

  $script = <<<EOT
$(function(){
 var target = $(".$class");
 $.get("$sourceUrl?q="+$("{$this->getElementClassSelector()}").val(), function (data) {
  target.find("option").remove();
  $(target).select2({
   data: $.map(data, function (d) {
    d.id = d.$idField;
    d.text = d.$textField;
    return d;
   })
  });
 });
});
EOT;

  Admin::script($script);

  return $this;
 }

其实就是相当于给load方法增加了一个默认时的数据填充。

最后,千万别忘记在路由上加上district方法哈,要把定义district的路由写在上面→

laravel-admin的多级联动方法

以上这篇laravel-admin的多级联动方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
如何做到多笔资料的同步
Oct 09 PHP
解决中英文字符串长度问题函数
Jan 16 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
Apr 09 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
Jun 23 PHP
从刷票了解获得客户端IP的方法
Sep 21 PHP
php格式化时间戳
Dec 17 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
php更新cookie内容的详细方法
Sep 30 #PHP
使用laravel的migrate创建数据表的方法
Sep 30 #PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 #PHP
php解决约瑟夫环算法实例分析
Sep 30 #PHP
php使用curl伪造浏览器访问操作示例
Sep 30 #PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 #PHP
Laravel框架控制器的request与response用法示例
Sep 30 #PHP
You might like
一个简单php扩展介绍与开发教程
2010/08/19 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
详解Python的Django框架中的中间件
2015/07/24 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
如何写你的创业计划书
2014/01/07 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
《分一分》教学反思
2014/04/13 职场文书
护士感人事迹
2014/05/01 职场文书
新文化运动的基本口号
2014/06/21 职场文书
捐款活动总结
2014/08/27 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
职工宿舍管理制度
2015/08/05 职场文书
大学生党课感想
2015/08/11 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python