yii2 学习

来源:互联网 发布:cdn软件 编辑:程序博客网 时间:2024/06/14 19:32

关联查询+LinkPager

return $this->hasOne(orderDetail::className(),[‘user_id’=>’id’]);//(hasOne)一对一

return $this->hasMany(orderDetail::className(),[‘user_id’=>’id’]);//(hasMany)一对多

控制器

$data = Order::find()->joinwith('orderDetail')->where([条件]);
$pageCount = $data->count();//总数
$pages = new Pagination(['totalCount' => $pageCount, 'pageSize' => '分页数量']);
$model = $data->offset($pages->offset)->limit($pages->limit)->all();//分页数据

上面例子中是缺少了gridview 里面的数据显示

思路:
1. 用get获取分页的 -1;//当前分页
2. (当前分页+1) * 分页数据
3. 总数就是 $pageCount;


授权(ACF)

[官方教程](http://www.yii-china.com/doc/guide/security_authorization.html)ACF 存取控制过滤器ACF 是一个种行动(action)过滤器 filter,可在控制器或者模块中使用

首先要use yii\filters\AccessControl;
在每一个控制器里面都可以加上一个behaviors的方法来实现简单授权方法,
以site为例 only 选项说明只对login、logout、singup方法有效果 ,
作用:
1.如果你是通过url直接打开 他将会直接调用 yii\web\User::loginRequired() 将用户重定向到登录页面
2. 如果是已认证的用户,会抛出一个 yii\web\ForbiddenHttpException 异常,来判断有没有授权这个方法

yii\filters\AccessRule 'allow'=>true 表示允许 false 拒绝'actions' 表示该规则用于匹配那些操作'actions'=> [    'logout' => ['get'],//表示logout这个方法使用get来访问]'roles'=>['@'],// @表示用于匹配已认证用户 ?用于匹配访客用户()