## 公共方法 ​ Qimall 在/common/models/base/BaseActiveRecord.php中重新写了数据库基本操作方法,传参更方便更简洁,例如使用 getOne($params),$params['where' ] = [['id' => "ID"]],重写的方法有count()、getOne()、getUnionOne()、listCount()、lists()、listPage()。这些重新方法都是调用paramPack()对参数进行封装 ## 方法举例 ### setData()方法介绍 ​ Qimall在控制器上调用setData()方法进行入库操作,在入库前都需要进行参数验证,调用Yii::$app->services->validate->validate()进行参数验证,setData()方法中传入验证过的参数,然后model里面进行数据库操作 应用举例 ```php /* *$params[‘id'] ID *$params[‘name'] 名称 *$params[‘type'] 类型 *$params[‘status'] 状态 *$params[‘is_warning'] 是否警告 *$params[‘command'] 需要执行的命令 *$params[‘rule'] 规则 *$params[‘created_at'] 创建时间 */ $res = CrontabTask::setData($params); ``` ### listPage()方法介绍 ##### 应用举例 ```php /* * $params 余额明细 * $count 是否显示所有页码 ture/false * $is_array 是否返回数据 ture/false */ $page_data = CapitalLog::listPage($params, $count, $is_array); ``` ## 访问权限控制方法 ### 访问权限控制 在backend/contronllers/BaseController.php中重新写了beforeAction()方法,该方法主要进行访问权限控制。需要进行访问控制都需要继承该类。 ```php /** * Site controller */ class BaseController extends Controller { public function beforeAction($action) { if (!parent::beforeAction($action)) { return false; } // 每页数量 $this->pageSize = Yii::$app->request->get('limit', 20); $this->pageSize > 50 && $this->pageSize = 50; // 判断当前模块的是否为主模块, 模块+控制器+方法 $permissionName = Yii::$app->controller->route; // 判断是否忽略校验 if (in_array($permissionName, Yii::$app->params['noAuthRoute'])) { return true; } // 开始权限校验 if (!Auth::verify($permissionName)) { if($this->request->isAjax){ return $this->error('对不起,您现在还没获此操作的权限'); }else{ throw new ForbiddenHttpException('对不起,您现在还没获此操作的权限'); } } return true; } } ```