Не работает 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));
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.