Pdopage через where в плагине фильтрует по всем контекстам, хотя айди родителя в 1 конектсте, как исправить?
Код фильтра
P.S как только не пытался сделать простое действие вывести объекты по tv он выводит во всех контекстах, при получении данных на плагин они нормальные, на выход where они нормальные, такие же как и обычные. P.S. не смотрите на бред в некоторых местах пробовал по разному, если вводить только год то ищет по всем контекстам, если выбрать пункт какой-либо фильтрует нормально, так же выбирал заказчик и год, тоже фильтрует нормально, если выбрать только год то ищет по всем, хотя parent указан, указывал по разному, и :Like, и :IN и :=
На выходе where имеет это
P.S как только не пытался сделать простое действие вывести объекты по tv он выводит во всех контекстах, при получении данных на плагин они нормальные, на выход where они нормальные, такие же как и обычные. P.S. не смотрите на бред в некоторых местах пробовал по разному, если вводить только год то ищет по всем контекстам, если выбрать пункт какой-либо фильтрует нормально, так же выбирал заказчик и год, тоже фильтрует нормально, если выбрать только год то ищет по всем, хотя parent указан, указывал по разному, и :Like, и :IN и :=
На выходе where имеет это
{"parent:LIKE":4,"from-year:=":"2012","OR:by-year:=":"2012"}
.<?php
if(sizeof($_POST) != 0){
switch ($_POST['action']) {
case 'filter':
$Data = $_POST;
if (sizeof($Data['fields']) >= 0) {
$hash = (string) $_POST['hash'];
$parentit = $Data["parent"];
$where = array();
// $where["template:="] = $templ;
$fields = $Data['fields'];
$where["parent"] = (int)$parentit;
foreach($fields as $key => $value){
switch ($key){
case 'project-type':
if(sizeof($fields[$key]) != 1){
$where = array();
} else{
$where["parent"] = (int)$parentit;
$where[$key] = $fields[$key];
}
break;
case 'form':
$where = array();
if(!empty($fields[$key]['customer']) && !empty($fields[$key]['year'])){
$where['customers-choose:LIKE'] = $fields[$key]['customer'];
$where["AND:parent:LIKE"] = (int)$parentit;
$year = $fields[$key]['year'];
$where["AND:from-year:="] = $year;
$where["OR:by-year:="] = $year;
break;
} else {
if(!empty($fields[$key]['customer'])){
$where['customers-choose:='] = $fields[$key]['customer'];
}
if(!empty($fields[$key]['year'])){
$year = $fields[$key]['year'];
$where["parent:LIKE"] = (int)$parentit;
$where["from-year:="] = $year;
$where["OR:by-year:="] = $year;
}
}
break;
default:
break;
}
}
$_SESSION['pdoPage'][$hash]['where'] = $where;
$output['message'] = $where;
$output['success'] = true;
$_SESSION['pdoPage'][$hash]['parents'] = (int)$parentit;
echo $modx->toJSON($output);
die();
} else {
$output['message'] = 'Error';
echo 'Error';
die();
}
break;
}
}
Комментарии: 3
Странно что именно с этого поля так происходит, хотя если вместе с ним еще другое поле то работает нормально.
Еще странно, если поменять местами айди родителя, допустим поставить в конец, то фильтр дает больше объектов, что такое?
Легко брат, если необходимо сделать услови е «и», «или», необходимо положить их в список вот пример.
$where[] = array("from-year:=" => $year, "OR:by-year:=" => $year);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.