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 相关文章推荐
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
初识Laravel
Oct 30 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
php三元运算符知识汇总
Jul 02 PHP
浅谈PHP中output_buffering
Jul 13 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
win7安装php框架Yii的方法
Jan 25 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
调试Python程序代码的几种方法总结
2015/04/28 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
EJB的激活机制
2013/10/25 面试题
改作风抓落实促发展心得体会
2014/09/10 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
小学英语教学随笔
2015/08/14 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
python语言中pandas字符串分割str.split()函数
2022/08/05 Python