Создание динамически обновляемого списка элементов с использованием списка конфигурации MIGX в MODX
Пожалуйста, поддержите меня, пока я пытаюсь объяснить это. Используя в качестве примера https://dev.bipc.com/people/ , я пытаюсь динамически обновлять список элементов в раскрывающемся списке «Допуск», чтобы отображать только те элементы, которые в настоящее время используются нашими сотрудниками.
В настоящее время это просто список, сгенерированный с помощью фрагмента коллекции циклов MIGX:
[[migxLoopCollection?
&packageName=`myPackage`
&classname=`myClassname`
&sortConfig=`[{"sortby":"name"}]`
&tpl=`@CODE: <option value="[[+uid]]">[[+name]]</option>`
&toPlaceholder = `listPlaceholder`
]]
Однако этот метод показывает все элементы, а не только те, которые были выбраны пользователями, и это приводит к тому, что элементы отфильтровывают всех людей и ничего не показывают.
Вместо этого я пытался создать список, используя только опубликованные ресурсы персонала, которые я мог передать в массив, удалить дубликаты и вывести отформатированный элемент строки на основе приведенного выше кода &tpl .
Я начал использовать ресурсы PDO, чтобы выбрать все родительские идентификаторы моих ресурсов, ограничить область до 5 пользователей для тестирования, определить мой шаблон фрагмента и имена шаблонов Var.
[[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 играет с уникальными идентификаторами и выводит их имена только с помощью фрагмента 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;
Теперь вот проблема, я продолжаю получать строку элементов с пробелами между ними, например:
Вашингтон, округ Колумбия, Флорида, Техас Вашингтон, округ Колумбия, Пенсильвания, Нью-Джерси
И вы можете видеть, что повторяющийся элемент для Вашингтона, округ Колумбия , не был удален. Я предполагаю, что перед первым элементом нет места.
Любая помощь будет принята с благодарностью.
Спасибо