Не получается получить данные через json_decode

Здравствуйте.
Хотел вставить в mFilter2 фильтр по MIGX полю, вот по этой статье modx.pro/solutions/14715.
Как обычно, сразу ничего не получилось и стал смотреть код кастомного класса. Споткнулся вот на этом:
foreach ($values as $value => $ids) {
            if ($value !== '') {
//print_r($value); 
//print_r('
');    
//$value='[{"MIGX_id":"2","title":"test","price":"100","weight":"","key":"test","value":"test2"}]';                
                $migxs = json_decode(str_replace('"', '"', $value));
//var_dump(json_decode($value));            
                foreach ($migxs as $migx) {
                    $title = trim($migx->title);
                    if (!is_array($results[$title]['resources'])) {
                        $results[$title]['resources'] = array();
                    }
                    $results[$title] = array(
                        'title' => $title,
                        'value' => $migx->value,
                        'type' => 'tv',
                        'resources' => array_merge($results[$title]['resources'], $ids)
                    );
                }
            }
        }

Данные не извлекаются.
var_dump(json_decode($value)); — выводит NONE (какая-то синтаксическая ошибка получается).
Причем через print_r($value) в цикле freoach строки JSON выводятся на экран и ошибок не видно. Если я копирую саму эту строку и вставляю в переменную, то json_decode тоже срабатывает:
$value='[{"MIGX_id":"2","title":"test","price":"100","weight":"","key":"test","value":"test2"}]';
var_dump(json_decode($value));
… и даже фильтр появляется (правда пока не работает)…

Я с JSON мало сталкивался, поэтому ума не приложу, что делать.
Игорь
02 июня 2020, 19:40
modx.pro
865
0

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

Max
Max
23 января 2021, 09:40
0
Я столкнулся сегодня на одном из новых сайтах, разработку веду на одинаковых сборках, использую siteExtra, но на последнем сайте migx ни чего не выводит, var_dump(json_decode($value)) дает NULL.
Через getImageList выводит, нифига не пойму что где отвалилось.
Вы нашли причину?
    Max
    Max
    23 января 2021, 09:46
    0
    Разобрался!
    Обращался к TV полю неверно, вместо "$_modx->resource.icons" а просто «icons»
    {set $rows = json_decode($_modx->resource.icons, true)}
                {foreach $rows as $row}
                <h3>{$row.title}</h3>
                <img src="{$row.img}" />
                {/foreach}
    Осталось теперь только понять, почему на других проектах этого не требовалось, сборки одинаковые, сейчас глянул другие сайты, там обращаюсь без $_modx->resource.value, все работает
    PS Все, тоже разобрался, там я уже с переменной работаю, которую получаю из условия {if}, поэтому обращение к классу modx не требуется, оно было ранее.
    Нормально сам с собой в субботу пообщался =))))
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2