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 将bmp图片转为jpg等其他任意格式的图片
Jun 21 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
php字符集转换
Jan 23 PHP
php中实现字符串翻转的方法
Feb 22 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 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上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
python实现哈希表
2014/02/07 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python常用排序算法的实现代码
2019/11/08 Python
PHP如何与mysql建立链接
2013/05/05 面试题
空中乘务员岗位职责
2014/03/08 职场文书
风险评估实施方案
2014/03/09 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
个人整改措施书面材料
2014/10/24 职场文书
自我推荐信怎么写
2015/03/24 职场文书
电影复兴之路观后感
2015/06/02 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python