Как в чанк передать массив и работать с ним ?

Здравствуйте, подскажите пожалуйста как в чанк передать массив, а потом в чанк с ним поработать?
Есть такая вот конструкция, $logArray — это массив. А в чанк как с ним дальше? Причем массив ассоциативный, есть просто {ключ => значение} а есть и {ключ => массив}
$modx->getChunk('tpl.1cUnloading.email',array(
           'elem'   => $logArray
        ));
На самом деле хотелось бы в чанке tpl.1cUnloading.email использовать fenom, и в нём уже сделать циклы по массиву который передаю.
Заранее благодарю за ответ
Сергей Хлопов
21 февраля 2019, 21:28
modx.pro
2 494
0

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

Александр Мельник
21 февраля 2019, 21:47
0
В чанке у вас должен оказаться массив $elem с которым вы можете работать в цикле {foreach $elem as $item}{/foreach}
Максим
22 февраля 2019, 11:25
0
Хотелось бы дополнить ответ Александра еще тем что у fenom есть модификатор iterable.
iterable — проверка возможности перебора переменной
{var $array = ['key' => 'value']}
{if $array | iterable}
{foreach $array as $key => $value}
    <p>{$key} is {$value}</p>
{/foreach}
{/if}
Сергей Хлопов
24 февраля 2019, 15:11
0
Для того что бы использовать fenom в своём чанке, воспользовался конструкцией:
$pdo = $modx->getService('pdoTools');
$output = $pdo->getChunk('tpl.1cUnloading.email',array("elem" => $logArray));
Как я понял обычный getChunk MODX не воспринимает fenom, поэтому вызвал метод getChunk pdoTools

Источник про pdoTools — docs.modx.pro/komponentyi/pdotools/klassyi/pdotools
    Николай
    26 февраля 2019, 08:09
    0
    Либо

    $output = $pdo->getChunk('tpl.1cUnloading.email', ["elem" => $logArray]);
    $maxIterations= (integer) $modx->getOption('parser_max_iterations', null, 10);
    $modx->getParser()->processElementTags('', $output, false, false, '[[', ']]', array(), $maxIterations);
    $modx->getParser()->processElementTags('', $output, true, true, '[[', ']]', array(), $maxIterations);
    Хотя если pdoTools исполняет сниппеты, то ваш метод будет «красивее».
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6