К содержанию

Помогите разобрать json TV

есть дополнительное поле содержащее json
[{"color":null,"size":"L","barCode":"5600008931013","count":6},
{"color":null,"size":"M","barCode":"5600008930016","count":6},
{"color":null,"size":"S","barCode":"5600008929010","count":10},
{"color":null,"size":"XL","barCode":"5600008932010","count":7}]
как мне его разобрать?
подскажите что почитать, что бы я сам смог это сделать или помогите его разобрать.


это tv в карточке товара minishop2 которое я получил из импорта 1C

на странице выводится так:
Размер: {значение size} — если count у этого размера < 0 то добавить класс какой то
Штрихкод: {значение barCode}
Цвет: {значение color}
Александр Иващенко
Александр Иващенко
21 февраля 2018, 11:53
modx.pro
2 173
Реклама

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

Александр Иващенко
21 февраля 2018, 14:55
из всего сниппета я только написал:
<?php
$array = $modx->resource->getTVValue('12'); // id моего TV
echo json_encode($array);
и мне вывело:
[{\"color\":null,\"size\":\"L\",\"barCode\":\"5600008931013\",\"count\":6},
{\"color\":null,\"size\":\"M\",\"barCode\":\"5600008930016\",\"count\":6},
{\"color\":null,\"size\":\"S\",\"barCode\":\"5600008929010\",\"count\":10},
{\"color\":null,\"size\":\"XL\",\"barCode\":\"5600008932010\",\"count\":7}]"
    Роман Ильин
    Роман Ильин Проверенный
    21 февраля 2018, 15:50
    json_decode же, не encode
    Максим
    Максим Проверенный
    21 февраля 2018, 15:10
    Я могу ошибаться а что вернет $array[0] перед енкодингом? Мне просто кажется что вы получаете массив.
    Проверить можно так
    var_dump($array[0]);
      Михаил
      Михаил Эксперт
      21 февраля 2018, 15:51
      {$_modx->resource.tv_name|fromJSON}
        Александр Иващенко
        21 февраля 2018, 17:07
        написал такой сниппет:
        <?php
        
        $array = $modx->resource->getTVValue('12'); // получаю tv с которым работаю
        $response = json_decode($array, true);  //декодирую json
        
        switch ($myparam) {
            case "size" :
                foreach ($response as $element) {
                    if ($element['count'] > 0) {
                        echo "<label class=\"barCode_" . $element['barCode'] . "\">
                            <span>" . $element['size'] . "</span>
                            <input type=\"radio\" name=\"options[size]\" value=\"" . $element['size'] . "\">
                        </label>";
                    }
                    else{
                        echo "<label class=\"barCode_" . $element['barCode'] . "\">
                            <span>" . $element['size'] . "</span>
                            <input type=\"radio\" name=\"options[size]\" value=\"" . $element['size'] . "\" disabled=\"disabled\">
                        </label>";
                    }
                }
            break;
            
            case "pcode" :
                foreach ($response as $element) {
                    echo "<span class=\"barCode_" . $element['barCode'] . "\">" . $element['barCode'] . " </span>";
                }
            break;
            case "pcodetrim" :
                foreach ($response as $element) {
                    echo "<span class=\"barCode_" . substr($element['barCode'], 8) . "\">" . substr($element['barCode'], 8) . " </span>";
                }
            break;
        }
        Как мне его передетать так, что бы для каждого $element['size'] выводились свои $element['barCode']
        вывожу сниппет так в 2х местах:
        [[count_snip_size? &myparam=`size`]] — размер
        [[count_snip_size? &myparam=`pcode`]] — штрихкод

        это лучше через js делать или на php в сниппете реализовывается?

        вот страница где я вывожу этот сниппет
        Там где размеры — мои размеры
        И в описании там есть ширихкод

        т.е. к каждому размеру выводить свой штрихкод я хочу. Подскажите пожалуйста как дальше делать
          Максим
          Максим Проверенный
          21 февраля 2018, 17:18
          Штрихкод менять аяксом при изменении размера. Ну и соответственно изначальная установка штрихкода должна быть реализована JS-ом.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6