Dcat-admin 多级联动

2023-11-19

Dcat-admin 2.x 多级联动
需求
  1. 一个省市区的三级联动功能
  2. 在表单中,需要可以实现三级联动
  3. 在列表的查询中,也需要实现三级联动
实现说明
  1. 前提:dcat-admin 提供了 一个 load 方法,有两个参数,第一个是选项框的字段名,第二个是接口路由,可以用它来实现联动
  2. 我们实现一个接口,接口一个ID,可以返回下级的省市区。给省的Id,就返回该省下的所有市
  3. 页面选项框选择后,会拿到选择的值,并去调用 load 方法指定接口
  4. 拿到接口返回值,去设置到 load 方法指定的字段上,用于充当选项
示例代码
//表单过滤的三级联动代码
$provinces = RegionPlus::query()->where('pid', 1)->pluck('name', 'id');
$form->select('merchant_province_id')->default(0)->value(0)->options($provinces)->load('merchant_city_id', '/api/region')->required()->help('详细地址省ID必填此项');
$form->select('merchant_city_id')
          ->default(0)
          ->value(0)
          ->load('merchant_area_id', '/api/region')
          ->required()
          ->help('详细地址市ID必填此项');
 $form->select('merchant_area_id')->default(0)->value(0)->required()->help('详细地址区ID必填此项');
//列表过滤的三级联动代码
$provinces = RegionPlus::query()->where('pid', 1)->pluck('name', 'id');
 $filter->equal('merchant_province_id', '省')->select($provinces)->load('merchant_city_id', '/api/region')->ignore();
       $filter->equal('merchant_city_id', '市')->select()->load('merchant_area_id', '/api/region')->ignore();
       $filter->equal('merchant_area_id', '区')->select();
//添加路由  Admin/routes.php
$router->get('api/region', 'Api\RegionPlusController@region');
//添加控制器与方法  Admin/Controllers/Api/RegionPlusController.php
   public function region(Request $request)
   {
       $parentId = $request->get('q');

       $response = RegionPlus::query()->where('pid', $parentId)->get([
           'id',
           DB::raw('name as text')
       ]);

       return $this->json($response)->notError();
   }

//响应的结果类似于  [{"id":110100,"text":"北京市"}]
数据表结构
CREATE TABLE `region_pluses` (
  `id` int(10) unsigned NOT NULL DEFAULT '0',
  `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '名称',
  `abbr` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '缩写',
  `pinyin` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '拼音',
  `t_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '繁体',
  `pid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'pid',
  `type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '类型',
  `zip` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '邮编',
  `enabled` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否启用',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `first_letter` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '首字母',
  `merge_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '合并ID,即被归属的行政区域ID',
  UNIQUE KEY `region_pluses_id_unique` (`id`) USING BTREE,
  KEY `region_pluses_name_index` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dcat-admin 多级联动 的相关文章

  • PHPExcel下载文件

    我想下载使用 PHPExcel 生成的 Excel 文件 我按照以下代码PHPExcel 强制下载问题 https stackoverflow com questions 26265108 phpexcel force download i
  • 压缩 zend Framework 2 的 html 输出

    我目前正在 PHP 5 4 4 上使用 Zend Framework 2 beta 开发个人 web 应用程序以用于自学目的 我想知道是否可以在 html 输出发送到浏览器之前拦截它 以便通过删除所有不必要的空格来缩小它 我怎样才能在ZF2
  • 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

    我正在尝试设置一个 kernel controller 侦听器 以便在函数返回 true 时重定向到另一个路由 我有可用的路线 但无法使用此路线设置控制器 event gt setController 我收到以下错误 FilterContr
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • 为什么AES java解密返回额外的字符?

    请原谅我英语不好 我使用 mcrypt 我从这里得到它用于 php 和 java 的 MCrypt https snipt net raw ee573b6957b7416f28aa560ead71c3a2 nice 在我的android应用
  • 如何在 Zend Framework 中存储 cron 作业的脚本?

    因为 ZF 的所有 URL 都依赖于 mod 重写 所以我并不清楚应该在哪里存储用于 cron 作业的本地脚本 有人有什么建议 或者有 正式接受 的方式吗 我用模块化目录结构 http framework zend com manual e
  • 覆盖供应商自动加载编辑器

    有没有办法让您创建的自动加载文件在调用供应商自动加载之前运行 我们似乎遇到了 SimpleSAML 的自动加载覆盖我们创建的自动加载文件之一的问题 我是 Composer 的新手 似乎无法在网上找到任何解决方案 我尝试将我们的自动加载文件包
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • Zend IMAP 搜索和过滤器

    我如何使用 Gmail 中的过滤器进行搜索 就像获取带有特定标签的电子邮件列表或来自特定电子邮件地址的邮件列表一样 我无法在文档中找到它 注意 我使用 oAuth 进行身份验证 我希望这与搜索无关 Gmail 上的标签实际上是 从 IMAP
  • 使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

    我有一个带有可编辑字段的 PDF 我希望将 HTML 表单中的值传递到此 PDF 中 我尝试过使用 FPDF 并且它有效 但是将值传递到 PDF 后 pdf 中的字段不再可编辑 另一个缺点是 在将值传递到 PDF 时 我们必须为每个字段指定
  • Laravel 路由中的“as”关键字是什么意思?

    据我从 Laravel 文档中了解到 它用于重定向 但也许我错了 I wrote Route get user profile as gt profile function echo some text 然后我期望我的 URL 重定向自ht
  • Laravel 广播:通知与事件

    我阅读了 laravel 文档Events and Notifications 似乎我们可以触发一个事件 并从该事件中触发 使用ShouldBroadcast接口 将其广播到我理解的 laravel echo 另一方面我们可以使用通知via
  • 使用日语“Enter”键进行搜索功能

    我在日语方面遇到了问题 我有一个允许用户搜索数据的表单 当用户输入要搜索的字符串并按 Enter 键时 搜索功能就会执行 我的代码是 formSearch input keyup function event var key event c
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web
  • 将 MySQL 结果作为 PHP 数组

    mysql 表 config name config value allow autologin 1 allow md5 0 当前的 php 代码 sth mysql query SELECT rows array while r mysq
  • 如何从字符串中删除所有数字?

    我想删除字符串 0 9 中的所有数字 我写了这段有效的代码 words preg replace 0 words remove numbers words preg replace 1 words remove numbers words
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将

随机推荐