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 开源AJAX框架14种
Aug 24 PHP
PHP Array交叉表实现代码
Aug 05 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
php打开远程文件的方法和风险及解决方法
Nov 12 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
ThinkPHP模板输出display用法分析
Nov 26 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
Symfony2 session用法实例分析
Feb 04 PHP
php进程间通讯实例分析
Jul 11 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
php校验公钥是否可用的实例方法
Sep 17 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简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
javascript常用的设计模式
2017/02/09 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
python list中append()与extend()用法分享
2013/03/24 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
python 二维数组90度旋转的方法
2019/01/28 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
详解Python 循环嵌套
2020/07/09 Python
白宫黑市官网:White House Black Market
2016/11/17 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
党委书记岗位职责
2013/11/24 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
贷款担保书范文
2014/05/13 职场文书
2014年班务工作总结
2014/12/02 职场文书
招商银行收入证明
2015/06/17 职场文书
申请吧主发表的感言
2015/08/03 职场文书
清洁工工作总结
2015/08/11 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android