sys-common.md 2.4 KB

公共方法

​ 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里面进行数据库操作

应用举例

/*
*$params[‘id'] ID
*$params[‘name'] 名称
*$params[‘type'] 类型
*$params[‘status'] 状态
*$params[‘is_warning'] 是否警告
*$params[‘command'] 需要执行的命令
*$params[‘rule'] 规则
*$params[‘created_at'] 创建时间
*/
 $res = CrontabTask::setData($params);

listPage()方法介绍

应用举例
/*
* $params 余额明细
* $count 是否显示所有页码 ture/false
* $is_array 是否返回数据 ture/false
*/
$page_data =  CapitalLog::listPage($params, $count, $is_array);

访问权限控制方法

访问权限控制

在backend/contronllers/BaseController.php中重新写了beforeAction()方法,该方法主要进行访问权限控制。需要进行访问控制都需要继承该类。

/**
 * 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;
    }
}