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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
Feb 19 PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
php实现水印文字和缩略图的方法示例
Dec 29 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 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中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
Javascript 布尔型分析
2008/12/22 Javascript
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
深入浅出了解Node.js Streams
2019/05/27 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
Python批量查询域名是否被注册过
2017/06/21 Python
python opencv摄像头的简单应用
2019/06/06 Python
Mac安装python3的方法步骤
2019/08/09 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
python可以用哪些数据库
2020/06/22 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
会计专业毕业生自荐信范文
2013/12/20 职场文书
30岁生日感言
2014/01/25 职场文书
社区母亲节活动方案
2014/03/05 职场文书
四群教育工作实施方案
2014/03/26 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
高中教师个人总结
2015/02/10 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
python处理json数据文件
2022/04/11 Python