Нужна подсказка по where в MsProduct

В снипете вызываю .$modx->runSnippet('msProducts',$option_par). и в
$option_par указываю
'where' => '{«Data.is_general:=»:1,«OR:id:IN»:'.$dop.'}',
где .$dop. это строка с id через запятую. И само собой одиночкая ковычка не дает записи работать. 'where' => '{«Data.is_general:=»:1,«OR:id:IN»:"'.$dop.'"}', тоже неработает. Само собой если прописать id просто руками без переменной, 'where' => '{«Data.is_general:=»:1,«OR:id:IN»:1234,5678,89654,4848}' то все работает. Прошу помощи. Вроде все где-то на поверхности но всю голову уже сломал.
Сергей С
15 июня 2023, 17:55
modx.pro
558
0

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

Артур Шевченко
15 июня 2023, 19:31
0
Просто удали одинарные кавычки. А ещё конкатенация строк в Fenom делается через '~', а не через точку.
    Сергей С
    15 июня 2023, 21:31
    0
    Но это не феном. Это в сниппете там php.
      Артур Шевченко
      15 июня 2023, 21:37
      0
      Тогда код спиппета покажи
        Сергей С
        15 июня 2023, 22:32
        0
        ну там огромный сниппет для ajax в нем подгружается список товаров. То есть внутри сниппета мы вызываем сниппет. И передаем параметры, а в выборке 'where' => '{«Data.is_general:=»:1,«OR:id:IN»:'.$dop.'}',
        Смысл его весь скидывать если загвоздка в паре строк:
        $dop = '83595,5693,4659';
        $option_par = array(
        'parents' => $parent,
        'where' => '{«Data.is_general:=»:1,«OR:id:IN»:'.$dop.'}',
        'limit' => 0,
        'tpl' => 'tpl.checkbox',
        );
        $content = $modx->runSnippet('msProducts',$option_par);
          Артур Шевченко
          16 июня 2023, 10:47
          0
          Скорее всего тут
          'where' => '{«Data.is_general:=»:1,«OR:id:IN»:'.$dop.'}',
          получается не валидный json. Думаю должно быть так
          'where' => '{"Data.is_general:=":1,"OR:id:IN":"'.$dop.'"}',
            Сергей С
            16 июня 2023, 12:40
            0
            Так пробовал. не работает в самом начале оба эти варианта указал.
              Dan
              Dan
              16 июня 2023, 16:53
              +1
              Во первых, $dop должна быть не строка, а массив и where вы можете указать тоже в виде массива:
              //как должен выглядеть $dop = [1234,5678,89654,4848];
              $option_par['where'] = [
                  'Data.is_general' => 1,
                  'OR:id:IN' => $dop
              ]
              $modx->runSnippet('msProducts',$option_par);
                Сергей С
                16 июня 2023, 19:09
                0
                Попробую. Спасибо. Where уже в массив перевёл т.к. там несколько условий and, OR.
    Тодор
    20 июня 2023, 00:04
    0
    $dop = [83595,5693,4659];
    $option_par = array(
        'parents' => $parent,
        'limit' => 0,
        'tpl' => 'tpl.checkbox',
        'where' => [
            "Data.is_general" => 1,
            "OR:id:IN" => $dop
        ]
    );
    $content = $modx->runSnippet('msProducts',$option_par);
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9