使用 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...