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 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
PHP 面向对象实现代码
Nov 11 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
从刷票了解获得客户端IP的方法
Sep 21 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
Apr 15 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 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
for循环连续求和、九九乘法表代码
2012/02/20 PHP
PHP实现递归无限级分类
2015/10/22 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
document.compatMode介绍
2009/05/21 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
JS实现多功能计算器
2020/10/28 Javascript
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
django实现支付宝支付实例讲解
2019/10/17 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
新员工欢迎词
2014/01/12 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
python 学习GCN图卷积神经网络
2022/05/11 Python