Ejemplo n.º 1
0
 public function actionRelnext()
 {
     $postdata = file_get_contents("php://input");
     $post = CJSON::decode($postdata);
     if (count($post) == 0) {
         die;
     }
     $start = @$post['i'];
     $fb = FormBuilder::load($post['m']);
     $ff = $fb->findField(['name' => $post['f']]);
     foreach ($ff['filters'] as $filter) {
         if ($filter['name'] != $post['n']) {
             continue;
         }
         $rf = new RelationField();
         $rf->params = $filter['relParams'];
         $rf->modelClass = $filter['relModelClass'];
         $rf->relationCriteria = $filter['relCriteria'];
         $rf->relationCriteria['limit'] = ActiveRecord::DEFAULT_PAGE_SIZE;
         $rf->relationCriteria['offset'] = $start;
         $rf->idField = $filter['relIdField'];
         $rf->labelField = $filter['relLabelField'];
         $rf->builder = $this->builder;
         $rf->params = is_null($filter['relParams']) ? [] : $filter['relParams'];
         if (is_array($rf->params)) {
             foreach ($rf->params as $k => $ff) {
                 if (substr($ff, 0, 3) == "js:" && isset($post['p'][$k])) {
                     $rf->params[$k] = "'" . @$post['p'][$k] . "'";
                 }
             }
         }
         $list = [];
         $rawList = $rf->query(@$post['s'], $rf->params);
         $rawList = is_null($rawList) ? [] : $rawList;
         foreach ($rawList as $key => $val) {
             $list[] = ['key' => $val['value'], 'value' => $val['label']];
         }
         $count = $rf->count(@$post['s'], $rf->params);
         echo json_encode(['list' => $list, 'count' => $count, 's' => $post['s']]);
     }
 }