Создание динамически обновляемого списка элементов с использованием списка конфигурации 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;

Теперь вот проблема, я продолжаю получать строку элементов с пробелами между ними, например:

Вашингтон, округ Колумбия, Флорида, Техас Вашингтон, округ Колумбия, Пенсильвания, Нью-Джерси

И вы можете видеть, что повторяющийся элемент для Вашингтона, округ Колумбия , не был удален. Я предполагаю, что перед первым элементом нет места.

Любая помощь будет принята с благодарностью.

Спасибо

0 ответов

Другие вопросы по тегам