php - 在 MODX 中使用 MIGX 配置列表创建动态更新的项目列表
问题描述
当我试图解释这一点时,请耐心等待。以https://dev.bipc.com/people/为例,我正在尝试动态更新“admissions”下拉列表中的项目列表,以仅显示我们员工当前使用的项目。
目前,它只是一个使用 MIGX Loop Collection 片段生成的列表:
[[migxLoopCollection?
&packageName=`myPackage`
&classname=`myClassname`
&sortConfig=`[{"sortby":"name"}]`
&tpl=`@CODE: <option value="[[+uid]]">[[+name]]</option>`
&toPlaceholder = `listPlaceholder`
]]
但是,此方法会显示所有项目,而不仅仅是用户选择的项目,这会导致项目将所有人过滤掉并且什么也不显示。
相反,我试图仅使用已发布的员工资源创建一个列表,我可以将其输入数组、删除重复项并根据上面的&tpl代码输出格式化的行项目。
我开始使用 PDO 资源来选择我的资源的所有父 ID,将范围限制为 5 个用户进行测试,定义我的块模板和模板变量名称。
[[pdoResources?
&parents=`xxx`
&depth=`0`
&limit=`5`
&tpl=`list-courtTpl`
&includeTVs=`LastName,Admissions`
&sortby=`{"LastName":"ASC"}`
&toPlaceholder=`listItems`
]]
[[+listItems:removeDupsList]]
list-courtTpl仅包含getImageList以收集每个资源中的所有项目:
[[getImageList?
&tvname=`Admissions`
&tpl=`list-CourtNameTpl`
&docid=`[[+id]]`
]]
list-CourtNameTpl使用唯一的 id 并仅使用 getCourName 片段输出它们的名称。
[[+getCourtsList:getCourtName:trimWhiteSpace]]
trimWhiteSpace片段在每个 Admission 项目中输入,并在每个项目周围添加一个双管道分隔符和修剪空白(它没有这样做):
$output = $input . "||";
echo trim($output);
removeDupsList片段应该获取当前列表并将每个项目分解为一个数组,使用array_unique删除重复项,对数据进行排序并输出每个值:
$list_input = explode('||', $input);
$list = array_unique($list_input);
sort($list);
$output = '';
foreach ($list as $x => $value) :
$output .= $modx->getChunk('list-CourtItemTpl',array(
'courtItem' => $value
));
endforeach;
echo $output;
现在问题来了,我不断收到一串中间有空格的项目,如下所示:
华盛顿特区 佛罗里达 得克萨斯 华盛顿特区 宾夕法尼亚 新泽西
您可以看到华盛顿特区的重复项目尚未删除。我假设是因为第一项前面没有空间。
任何帮助将不胜感激。
谢谢
解决方案
推荐阅读
- python - 在 x 轴上绘制数据框列
- php - Laravel 通过 Route 将变量从 Form 解析到 Controller 方法
- express - 如何删除这些关于 HEAD 和 OPTIONS 的招摇警告?
- rational-developer-for-i - 如何在 Rational Developer for IBM i 上进行 EDTWRD
- java - 在不知道文件目录或父文件的情况下读取文件路径
- ios - 如何在 swift 中从父子关系中的父子关系中获取子域
- node.js - NestJS:如何注册瞬态和每个 Web 请求提供程序
- android - 如何在 MVVM 架构 android 的云 Firestore 实时更新中包含源缓存
- wordpress - 以编程方式触发 Wordpress Gutenberg “转换为块”
- android - 使用 SQLite3 数据库和 React-Native App 或类似工具从我的 Laravel 网站存储大量数据