msProducts и общий параметр return

Здравствуйте!

Почему то не отрабатывает общий параметр pdoTools return
в доках msProducts
Можно использовать и другие общие параметры pdoTools
в доках pdoTools параметр return

pdoTools умеет возвращать данные в разном виде, в зависимости от параметр &return. В основном это используют сами сниппеты для внутренних нужд, но вы можете указывать &return в pdoResources:

chunks — оформленные чанки, по умолчанию.
sql — подготовленный сырой SQL, полезно для отладки. Сам запрос не выполняется, только выводится на экран.
data — готовый массив данных. Из-за особенностей работы сниппетов MODX этот вариант имеет смысл использовать только при вызове pdoFetch::run() напрямую из своего сниппета, в противном случае вы получите только строку «Array».
ids — возвращает только идентификаторы документов, через запятую. Удобно для подстановки в качестве параметра другим сниппетам. Параметр &returnIds использует именно этот тип.
json — возврат массива данных JSON строкой.
serialize — возврат массива данных сериализованной строкой. Иногда, по непонятным причинам, может вызвать нехватку памяти. Лучше использовать json.
вызов обычный. Без return отрабатывает нормально, выводит как надо.
{set $products = '!msProducts' | snippet : [
    'return' => 'data'
    'parents' => $_modx->resource.id
    'tpl' => 'filter_option'
    'limit' => 0
    'depth' => 0
    'sortby' => 'menuindex'
]}
Константин Ильин
29 октября 2019, 22:15
modx.pro
1 605
0

Комментарии: 5

ElenaLelo
31 октября 2019, 13:54
0
У меня тоже не отрабатывает.
В снииппете написано
'return' => !empty($returnIds)
        ? 'ids'
        : 'data',
Что как бы намекает, на то что return в msProducts есть, но он принимает два значения (в отличии от pdoTools). Либо ids, либо data, но если ввести data — выведется обработанный чанк. В тоже время, в документации написано
Из-за особенностей работы сниппетов MODX этот вариант имеет смысл использовать только при вызове pdoFetch::run() напрямую из своего сниппета, в противном случае вы получите только строку «Array».
Что так же намекает, на то, что если вам требуется посмотреть на массив значений то можно вывести пустой tpl, а для взаимодействия использовать pdo. Еще как вариант, вызовите pdoResources, через выборку продукты и уже там сделаете return.
    Константин Ильин
    31 октября 2019, 14:59
    0
    Вот пришлось что типа такого сделать:
    Еще как вариант, вызовите pdoResources, через выборку продукты и уже там сделаете return.
    Спасибо за ответ
    Максим
    04 февраля 2020, 18:08
    0
    На моей памяти этот параметр никогда нормально не работал в pdoTools и основанных на нем сниппетах.
    В некоторых работает return=json, но, например, в pdoMenu не работает, сразу результат выводится.
    return=data должен возвращать массив, в сниппетах выводится просто слово Array. Даже, если запускать в php.
      Stepan
      03 марта 2022, 11:43
      0
      в новых версиях pdoTools все работает
        Вячеслав Варов
        08 августа 2024, 19:59
        0
        Сейчас возвращает строку c data, что с ней делать пока не понятно

        string(50031) "Array ( [id] => 51 [type] => document [contentType].....
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5