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)); }