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 相关文章推荐
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
合格的PHP程序员必备技能
Nov 13 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
thinkPHP中create方法与令牌验证实例浅析
Dec 08 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP常见数组排序方法小结
Aug 20 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
php layui实现前端多图上传实例
Jul 30 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应用技巧
2008/03/27 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
Python中logging模块的用法实例
2014/09/29 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
python实现代码统计程序
2019/09/19 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
如何利用find命令查找文件
2016/11/18 面试题
常见的软件开发流程有哪些
2015/11/14 面试题
办公室主任岗位职责
2013/11/08 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
企业安全生产检查制度
2015/08/06 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
nginx服务器的下载安装与使用详解
2021/08/02 Servers
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python