Exemplo n.º 1
0
 public function actionJQGridData()
 {
     $model = (string) filter_input(INPUT_POST, 'model');
     if (!@class_exists($model) || !$model::model() instanceof CModel) {
         throw new CHttpException(500, 'Не существует модель "' . $model . '"');
     }
     if (!method_exists($model, 'GetPermissions')) {
         throw new CHttpException(500, 'Не существует метод "GetPermissions" модели "' . $model . '"');
     }
     if (!$model::model()->GetPermissions('view')) {
         throw new CHttpException(500, 'Нет доступа для чтения модели "' . $model . '"');
     }
     /* $_POST['criteriamethod'] - Имя метода модели, возвращающего CDBCriteria (не обязательно) */
     $criteriamethod = (string) filter_input(INPUT_POST, 'criteriamethod');
     if ($criteriamethod !== '' && !method_exists($model, $criteriamethod)) {
         throw new CHttpException(500, 'Метод критерия "' . $criteriamethod . '" отсутствует в модели "' . $model . '"');
     }
     $model = $model::model();
     $criteria = $criteriamethod !== '' ? $model->{$criteriamethod}() : new CDbCriteria();
     /* Количество записей, страница пагинации, сортировка - параметры объекта данных JQGrid */
     $rows = (string) filter_input(INPUT_POST, 'rows');
     $page = (string) filter_input(INPUT_POST, 'page');
     $sidx = (string) filter_input(INPUT_POST, 'sidx');
     $sord = (string) filter_input(INPUT_POST, 'sord');
     /* Data_GetDataObject - Генерирует объект с данными для JQGrid */
     echo json_encode(Proc::Data_GetDataObject($model, $criteria, $rows, $page, $sidx, $sord));
 }