如何解决使用 MODX
请耐心等待我解释这一点。以 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 Resources 来选择我资源的所有父 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 片段在每个入场项目中馈送,并在每个项目周围添加双管道分隔符和修剪空白(它没有这样做):
$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;
现在问题来了,我不断收到一串中间有空格的项目,如下所示:
华盛顿特区 佛罗里达 德克萨斯 华盛顿特区 宾夕法尼亚 新泽西
您可以看到 Washington DC 的重复项尚未删除。我假设是因为第一项前面没有空格。
任何帮助将不胜感激。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。