Не работает json_encode, мешает fenom
        Всем привет, задрался гуглить. Плз, хелп:
Имеется сниппет
Я подозреваю, что после кодирования массива в json парсер еще раз вызывается зачем-то и спотыкается об эту фигурную скобку. И все ломается
Что интересно, этот же код не вызывает ошибку, если тестировать в modalConsole
Полный код сниппета:
    
    
                                                                                
            Имеется сниппет
$array = [
  'parents' => '5',
  'limit' => '0',
  'includeTVs' => '
    gallery,
    price,
    seats,
    year,
  ',
  'where' => '{"template:=":3}',
  'return' => 'json'
];
$output = $modx->runSnippet('pdoResources', $array);
$output = json_decode($output, true);
...
...
print_r(json_encode($arr);Белый экран, а в журнале Unexpected token ':' in 6659645b22726b14e4c56b6a41d87d64 line 16, near '{"catid":' <- thereПри том, что если массив $arr не пытаться декодить, то он прекрасно выводится.Я подозреваю, что после кодирования массива в json парсер еще раз вызывается зачем-то и спотыкается об эту фигурную скобку. И все ломается
Что интересно, этот же код не вызывает ошибку, если тестировать в modalConsole
Полный код сниппета:
<?php
$array = [
  'parents' => '5',
  'limit' => '0',
  'includeTVs' => '
    gallery,
    price,
    seats,
    year,
  ',
  'where' => '{"template:=":3}',
  'return' => 'json'
];
$output = $modx->runSnippet('pdoResources', $array);
$output = json_decode($output, true);
$arr = [];
foreach($output as $o){
    global $modx;
    $pids = $modx->getParentIds($o['id'], 10, array('context' => 'web'));
    $gal = [];
    
    foreach($o['tv.gallery'] as $g){
        $gal[] = $g['image'];
    }
    
    $a = [
            "catid"     =>  $pids[0],
            "id"        =>  $o['id'],
            "title"     =>  $o['pagetitle'],
            "uri"       =>  $o['uri'],
            "year"      =>  $o['tv.year'],
            "seats"     =>  $o['tv.seats'],
            "price"     =>  $o['tv.price'][0],
            "gallery"   =>  $gal
        ];
    $arr[] = $a;
}
print_r(json_encode($arr));    Комментарии: 3
                Не могу вспомнить ни одной задачи для решения которой мне требовалось бы из своего сниппета вернуть json. Однако, ты можешь попробовать вернуть из сниппета массив, а с помощью модификатора toJSON закодировать в JSON уже в шаблоне.            
                    
                Я делаю что-то типа api. Есть ресурс, который слушает post-запросы и в зависимости от параметра дергает сниппеты
                    {if $.post.action == 'get_vehicles'} [[get_vehicles]] {/if}А вот и ответ: нехорошо мешать синтаксисы. Код заработал:{if $.post.action == 'get_vehicles'} {'get_vehicles' | snippet : []} {/if}            
                Может попробовать в ignore засунуть:
                    print_r('{ignore}' . json_encode($arr). '{/ignore}');Или попробуй так:print_r(json_encode($arr, JSON_FORCE_OBJECT));Или так:print_r($modx->toJson($arr));            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.