1、/vendor/yiisoft/yii2/web/UrlManager.php 方法createUrl 修改url参数转码
2、config/web.php 配置文件Yii::$app(应用主体)的相关参数/注册应用组件
3、Model验证器 方法rules()

4、advanced安装
  下载压缩包并解压到blogdemo2
  cmd进入blogdemo2
  ~$ php init
  ~$ 0
  ~$ yes
  安装成功
  新建数据库blogdemo2
  /common/config/main-local.php 配置数据库信息
  cmd:~$ php yii migrate 建表user、migration
    ~$ yes
5、advanced模板解决了多人开发配置文件冲突的问题
6、Mode:模型
  model可以继承\yii\db\ActiveRecord(数据库字段为类属性),也可以继承yii\base\Model(需指定类的成员属性)
  beforeSave的写法。。。
7、视图层
  DetailView:
    /blogdemo2/backend/views/post/view.php 这是有测试列子 author status(外键关联)
    格式设置:参考手册->yii\widgets->DetailView->$attributes->yii\i18n\Formatter->method去掉as就是相关的格式
  ListView:
  GridView:
    https://blog.csdn.net/abei2017/article/details/80693024

 GridView配置总结   

<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
// 'tableOptions' => ['name'=>'tabalse'],//table 属性
'filterRowOptions'=>['class' => 'filters'],//搜索框的class
'headerRowOptions' => ['class'=>'abc'],//排序行的属性
'id' => 'idss',//设置table外的div的id
'options' => ['name' => 'options'],//设置table外的div的属性
'pager' => [//分页样式调整
'activePageCssClass'=>'active',
'options' => ['class' => 'pagination'],
],
'showFooter' => false,//是否显示tfoot
'placeFooterAfterBody' => false,
'rowOptions' => ['name'=>'rowOptionsss'],//给每个tr加属性
'showHeader' => true,//是否显示表头(搜索行与th行)
'layout' => "{summary}\n{items}\n{pager}",//板块//layout有5个值,分别为{summary}、{errors}、{items}、{sorter}和{pager}。
'summary' => "{begin}-{end}-{count}-{totalCount}-{page}-{pageCount}",//数据的相关信息,行,页面,总数等
'summaryOptions' => ['class' => 'summarys'],
'afterRow' => function ()//每一行渲染后执行的方法
{
// return '<td>111</td>';
},
'beforeRow' => function ()//每一行渲染前执行的方法
{
// return '<td>222</td>';
},
'caption' => '表格的标题',//表格的标题
'captionOptions' => ['class'=>'capClass'],//表格的标题的html标签属性设置
'emptyCell' => '<p>null</p>',//单元格数据为空时显示的内容
'emptyText' => 'emptyText',//$dataProvider为空时显示的内容
'columns' => [//设置的列(字段)
// ['class' => 'yii\grid\SerialColumn'],//序号列
[
'attribute'=>'id',
'contentOptions'=>['width'=>'30px'],
],
'title',
[
'attribute'=>'authorName',
'label' => '作者',
'value'=>'author.nickname',
],
// 'content:ntext',
'tags:ntext',
[
'attribute'=>'status',
'value'=>'status0.name',
'filter'=>Poststatus::find()
->select(['name', 'id'])
->orderBy('position')
->indexBy('id')
->column(),
],
//'create_time:datetime',
// 'update_time:datetime',
[
'label' => '修改时间',
'attribute'=>'update_time',
'value' => function ($data) {
return date('Y-m-d H:i:s',$data->update_time);
},
], [
'class' => 'yii\grid\ActionColumn',
'template' => '{view}{update}{delete}{approve}',
'buttons' =>[
'approve' => function ($url, $model, $key)
{
$options = [
'title' => Yii::t('yii', '审核'),
'arid-label' => Yii::t('yii', '审核'),
'data-confirm' => Yii::t('yii', '你确定要通过这条评论吗?'),
'data-method' => 'post',
'data-ajax' => '0',
];
return Html::a('<span class="glyphicon glyphicon-check"></span>', $url, $options);
}
],
],
],
]); ?>

  ActiveForm:
    参考手册->yii\widgets->ActiveForm->field()->yii\widgets\ActiveField 或 参考手册->yii\widgets->ActiveField
    yii\grid\ActionColumn:列表操作功能

8、yii连接不同的数据库
  'dsn' => 'mysql:host=localhost;dbname=blogdemo2db',//mysql
  'dsn' => 'sqlite:/path/to/database/file',//sqlite
  'dsn' => 'pgsql:host=localhost;port=5432;dbname=mydatabase',//postgreSQL
  'dsn' => 'oci:dbname=//localhost:1521/mydatabase',//oracle
9、数据查询:(三种方式)
  Command:(return Array)不常用,不推荐
    Yii::$app->db->createCommand('SELECT * FROM post')->queryAll();

    $post = Yii::$app->db->createCommand('SELECT * FROM post  where id=:id and status=:status')
      ->bindValue(':id', $id)
      ->bindValue(':status', 2)
      ->queryOne();
  AR:(return Object)常用,推荐;
    一个AR类关联一张数据表,每个AR对象对应表中的一行;
    AR对象的属性对应为数据行的列;
    可以直接以面向对象的方式来操纵数据库中的数据,这样就不需要写SQL语句就能实现数据库的访问
    Post::find():\yii\db\ActiveRecord类中的方法;该方法调用的ActiveQuery

    查询:
      $model = Post::find()->where(['id' => 32])->one();//Post::findOne(1);//主键为1的
      $model = Post::find()->where(['status' => 2])->all();//Post::findAll(['status'=>2]);
      $model = Post::find()->where(['AND',['status'=>2],['author_id'=>1],['like','title','yii']])->orderBy('id')->all();
    插入:
      $postMode = new Post();
      $postMode->title = 't';
      $postMode->content = 'contentcontentcontentcontent';
      $postMode->status = 1;
      $postMode->author_id = 1;
      $postMode->save();
    更新:
      $model = Post::findOne(32);
      $model->title = 'Yii2小部件详解32323232';
      $model->save();
    删除:
      $model = Post::findOne(32);
      $model->delete();

  findBySql:(属于AR类)
    $sql = 'SELECT * FROM post WHERE status=2';
    $post = Post::findBySql($sql);
  QueryBuilder:(查询构造器return Array)
    $rows = (new \yii\db\Query())
      ->select(['id', 'email'])
      ->from('user')
      ->where(['id'=>1])//->where("status=:status")->addParams([':status'=>$status])
      ->orderBy(id)
      ->limit(10)
      ->indexBy(id)//调用all的时候id的值做为数组的key,而不是默认为索引数组
      //->join('LEFT JOIN', 'post', 'post.user_id = user.id')
      ->all();

    $rows->union($rows2);//联合查询
10、小助手:
  $this->redirect(['view', 'id'=>32]);//跳转到本controll中的其他方法
  Html类: /vendor/yiisoft/yii2/helpers/BaseHtml.php 参考手册->yii\helpers\BaseHtml
  ArrayHelper类:/vendor/yiisoft/yii2/helpers/BaseArrayHelper.php 参考手册->yii\helpers\ArrayHelper
11、相关类的继承(以派生的模式显示)
                           |-- 》common\models\LoginForm.php
yii\base\BaseObject--》yii\base\Component--|--》yii\base\Model》yii\db\BaseActiveRecord》yii\db\ActiveRecord》相关业务Model
                    |--》yii\db\Query》yii\db\ActiveQuery《-------------------|find()
                         |--》yii\db\Command

12、登录、ACF(用户与游客访问控制)、RBAC

  后台登录:
    复制表user为adminuser
    backend/config/main.php 'identityClass' => 'common\models\User', 改为 'identityClass' => 'common\models\Adminuser',
    gii生成Adminuser.php Model /common/models
    backend/controllers/SiteController.php 中 的方法actionLogin中修改 $model = new LoginForm(); 为 $model = new AdminLoginForm(); 并引用命名空间use common\models\AdminLoginForm;
    common/models 复制文件 LoginForm.php 为 AdminLoginForm.php
    AdminLoginForm.php 修改:
      类名修改
      添加设置属性方法
        public function attributeLabels()
        {
          return [
            'username' => '用户名',
            'password' => '密码',
            'rememberMe' => '记住密码'
          ];
        }
      方法validatePassword中 'Incorrect username or password.' 改为 '用户名或密码错误。'
      方法getUser中 $this->_user = User::findByUsername($this->username); 改为 $this->_user = Adminuser::findByUsername($this->username);
    修改 /common/models/Adminuser.php
      添加接口继承IdentityInterface(记得引入命名空间)
      从/common/models/User.php中复制13个方法过来,findIdentity()......removePasswordResetToken()
      删除STATUS_ACTIVE的相关
    配置不同的cooike /backend/config/main.php 'cookieValidationKey' =>'sdfjjksloeedf78789judf',

  ACF: 查看/backend/controllers/PostController.php中的behaviors方法

  RBAC:
    配置common/config/main.php
      'components' => [
        'cache' => [
          'class' => 'yii\caching\FileCache',
        ],
        'authManager' => [
          'class' => 'yii\rbac\DbManager'
        ],
      ],
    控制台cmd(创建相关权限表auth_rule、auth_item_child、auth_item、auth_assignment)
      ~$ cd blogdemo2
      ~$ yii migrate --migrationPath=@yii/rbac/migrations
        ~$ yes
    *相关表的解释
      auth_item: 存储角色名(组)和权限(操作)
      auth_item_child: 角色有哪些权限,该表数据存在于auth_item表的name字段
      auth_assignment: 角色与用户的关系
    创建控制台文件RbacController.php
    ~$ yii rbac/init #给权限相关表添加权限数据
    相关方法添加权限判断
      if (!Yii::$app->user->can('createPost')){
        throw new ForbiddenHttpException('对不起,你没有进行该操作的权限。');
      }
    权限操作: backend/controllers/AdminuserController.php 添加 actionPrivilege方法

weixi 123456
weixi_member 123456
C:\Users\LiHailong\Documents\GitHub\blogdemo2

Yii2学习笔记---内附GridView配置总结的更多相关文章

  1. thinkphp学习笔记4—眼花缭乱的配置

    原文:thinkphp学习笔记4-眼花缭乱的配置 1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展 ...

  2. golang学习笔记8 beego参数配置 打包linux命令

    golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...

  3. PHP学习笔记----IIS7下安装配置php环境

    原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...

  4. OGG学习笔记02-单向复制配置实例

    OGG学习笔记02-单向复制配置实例 实验环境: 源端:192.168.1.30,Oracle 10.2.0.5 单实例 目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1. ...

  5. Django:学习笔记(1)——开发环境配置

    Django:学习笔记(1)——开发环境配置 Django的安装与配置 安装Django 首先,我们可以执行python -m django --version命令,查看是否已安装django. 如果 ...

  6. Grunt 学习笔记【2】---- 配置和创建任务

    本文主要讲Grunt任务配置. 说明:本文所有示例都基于Grunt 0.4.5版本. 一 说明 使用Grunt实现项目的打包等工程化工作,实际上是通过Grunt提供的机制和插件,配置一个个任务(例如: ...

  7. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  8. Springboot学习笔记(六)-配置化注入

    前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...

  9. 雨痕 的《Python学习笔记》--附脑图(转)

    原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意 ...

随机推荐

  1. c#调用WinRAR软件压缩和解压文件

    using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Linq ...

  2. [ Laravel 5.6 文档 ]laravel数据库操作分页(自定义分页实现和自定义分页样式)

    简介 在其他框架中,分页可能是件非常痛苦的事,Laravel 让这件事变得简单.易于上手.Laravel 的分页器与查询构建器和 Eloquent ORM 集成在一起,并开箱提供方便的.易于使用的.基 ...

  3. hibernate之6.one2many单向

    表结构: 实体类图: CRUD: Student: package com.demo.model; import java.io.UnsupportedEncodingException; impor ...

  4. Linux_经常使用命令

    1. ls显示文件夹文件夹及文件使用方式: ls -lt -a 显示文件夹下全部文件及文件夹包括 . 与 .. -A 显示文件夹下全部文件及文件夹不包括 . 与 .. -l 显示文件夹下全部文件及文件 ...

  5. mysql 优化下

    比较全面的MySQL优化参考(下篇) 8条回复 本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分 ...

  6. mysql单表导入数据,全量备份导入单表

    (1)“导出”表 导出表是在备份的prepare阶段进行的,因此,一旦完全备份完成,就可以在prepare过程中通过--export选项将某表导出了: innobackupex --apply-log ...

  7. 【SQLServer2008】之如何导入mdf,ldf文件、导入.mdf文件报错解决问题以及如何获得Authenticated Users 权限

    一.如何导入mdf,ldf文件: 链接:http://jingyan.baidu.com/article/09ea3ede21258cc0afde3943.html 二.导入.mdf文件报错解决问题 ...

  8. WebSocket和SocketIO总结

    1.WebSocket是什么? WebScoket是一种让客户端和服务器之间能进行双向实时通信的技术.它是HTML最新标准HTML5的一个协议规范,本质上是个基于TCP的协议,它通过HTTP/HTTP ...

  9. 浅谈Java数据结构和算法

    今天的突然看集合底层的时候发现了好多算法和数据结构.再次就比较一下和汇总一下. 数据结构分类:线性结构和非线性结构 问题一: 什么是线性和非线性: 我个人的理解是:数据结构中线性结构指的是数据元素之间 ...

  10. 大数据hadoop之zookeeper

    一.ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示. 图 1.1 ZooK ...