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 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
打造超酷的PHP数据饼图效果实现代码
Nov 23 PHP
php无限极分类实现的两种解决方法
Apr 28 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
Yii核心验证器api详解
Nov 23 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
PHP实现的数据对象映射模式详解
Mar 20 PHP
php探针使用原理和技巧讲解
Sep 17 PHP
Laravel实现ORM带条件搜索分页
Oct 24 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
js实现文字截断功能
2016/09/14 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
采购文员岗位职责
2013/11/20 职场文书
外企求职信范文分享
2013/12/31 职场文书
节约能源标语
2014/06/17 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
MySQL 数据表操作
2022/05/04 MySQL