• Yii 1.1.17 五、分页类、关联模型、权限验证与默认页面跳转


    一、分页类使用

    1、在控制器中

    // 实例化
    $criteria = new CDbCriteria();
    $articleModel = Article::model();
    
    // 分页
    $total = $articleModel->count($criteria); //总记录数
    $page = new CPagination($total);          //实例化分页类
    $page->pageSize = 3;                      //每页3条
    $page->applyLimit($criteria);             //截取记录
    
    $articleInfo = $articleModel->findAll($criteria);
    
    $this->render('index', array('articleInfo' => $articleInfo, 'page' => $page)); //渲染视图,分配变量
    

      

    2、在视图中

    <?php
        $this->widget('CLinkPager', array(
    
            'header'         =>  '',    //前端页面上本行开头的提示信息,默认为“Go to page:”
            'firstPageLabel' =>  '首页',
            'lastPageLabel'  =>  '末页',
            'prevPageLabel'  =>  '上一页',
            'nextPageLabel'  =>  '下一页',
            'pages'          =>  $page,
            'maxButtonCount' =>  5      // 最多显示5个页码按钮
        ));
     ?>
    

    二、关联模型

    在模型的 relations() 方法中设置要关联的表。

    /**
     * 关联category模型
     * @return [type] [description]
     */
    public function relations(){
        return array(
            //主表中该模型名 => array(关联关系, 关联副表,关联字段(主表))
            'category' => array(self::BELONGS_TO, 'category', 'cid')
        );
    }
    

    三、权限验证

    给特定控制器设置操作权限,只需给该控制器添加两个方法:filters()和accessRules()

    /**
     * 过滤器
     * @return [type] [description]
     */
    public function filters() {
        return array(
            //访问控制,可以通过+ -来控制哪些方法是否需要参与过滤
            'accessControl - index' //index无需验证
            );
    }
    
    /**
     * 访问规则
     * @return [type] [description]
     */
    public function accessRules() {
        return array(
            array( //允许所有用户访问index操作
                'allow',
                'actions' => array('index'),
                'users' => array('*') // * 表示所有用户, @ 表示登录用户, ? 表示来宾用户
                ),
            array( //允许通过验证的用户访问index, add操作
                'allow',
                'actions' => array('index', 'add'),
                'users' => array('@')
                ),
            array( //允许管理员admin执行删除操作
                'allow',
                'actions' => array('del'),
                'users' => array('admin')
                ),
            array( //拒绝网站编辑员执行删除操作
                'deny',
                'acionts' => array('del'),
                'users' =>  array('editor')
                )
            );
    }
    

    四、默认跳转页面

    有了权限验证,那么就需要在没有权限时访问的默认跳转页面,

    在main.php里,

    'components'=>array(
    
      ...
    
      'user'=>array(
        // enable cookie-based authentication
        'allowAutoLogin'=>true,
    
        // 默认跳转到后台登录页
        'loginUrl' => array('admin/login/index')
      ),
    
      ...
    
    ),
    
  • 相关阅读:
    .NET C# Tostring() format 格式化字符串大全
    国美秒杀器分享帐号
    .NET 调用JS:WebBrowser.Document.InvokeScript 方法抛出“指定的转换无效”异常的原因
    非接触式IC卡性能简介(M1)
    使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果
    C# .NET entity下sqlite部署问题
    sqlite3自增key设定(创建自增字段)
    .NET在winform中使用UrlEncode进行字符串编码字母大写
    HttpWebRequest 二三事
    SQLite在字符串比较中的大小写问题
  • 原文地址:https://www.cnblogs.com/mingc/p/6752142.html
Copyright © 2020-2023  润新知