Pdopage через where в плагине фильтрует по всем контекстам, хотя айди родителя в 1 конектсте, как исправить?

Код фильтра
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;

    }
}
Slava
15 апреля 2020, 15:32
modx.pro
142
0

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

Slava
15 апреля 2020, 15:34
0
Странно что именно с этого поля так происходит, хотя если вместе с ним еще другое поле то работает нормально.
    Slava
    15 апреля 2020, 16:53
    0
    Еще странно, если поменять местами айди родителя, допустим поставить в конец, то фильтр дает больше объектов, что такое?
      Slava
      15 апреля 2020, 17:11
      0
      Легко брат, если необходимо сделать услови е «и», «или», необходимо положить их в список вот пример.
      $where[] = array("from-year:=" => $year, "OR:by-year:=" => $year);
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        3