Нужна подсказка по 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}' то все работает. Прошу помощи. Вроде все где-то на поверхности но всю голову уже сломал.
$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}' то все работает. Прошу помощи. Вроде все где-то на поверхности но всю голову уже сломал.
Комментарии: 9
Просто удали одинарные кавычки. А ещё конкатенация строк в Fenom делается через '~', а не через точку.
Но это не феном. Это в сниппете там php.
Тогда код спиппета покажи
ну там огромный сниппет для 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);
Смысл его весь скидывать если загвоздка в паре строк:
$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);
Скорее всего тут
'where' => '{«Data.is_general:=»:1,«OR:id:IN»:'.$dop.'}',
получается не валидный json. Думаю должно быть так'where' => '{"Data.is_general:=":1,"OR:id:IN":"'.$dop.'"}',
Так пробовал. не работает в самом начале оба эти варианта указал.
Во первых, $dop должна быть не строка, а массив и where вы можете указать тоже в виде массива:
//как должен выглядеть $dop = [1234,5678,89654,4848];
$option_par['where'] = [
'Data.is_general' => 1,
'OR:id:IN' => $dop
]
$modx->runSnippet('msProducts',$option_par);
Попробую. Спасибо. Where уже в массив перевёл т.к. там несколько условий and, OR.
$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);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.