使用 Gii 进行开发

  1. 配置gii
  2. 生成model类
  3. 生成crud
  4. 运行
  5. 总结

本章将介绍如何使用 Gii 去自动生成 Web 站点常用功能的代码。使用 Gii 生成代码非常简单,官方也提供了常用的crud功能,Wii框架在此基础上根据项目专门定制了gii模块。

本章节,你将会学到:

  • 在项目中开启 Gii
  • 使用 Gii 去生成model类
  • 使用 Gii 去生成WAU的数据表操作的增查改删(CRUD)代码
  • Gii 生成的代码应用结构

开始 Gii

Gii 是 Wii 中的一个模块。可以在开发环境配置文件中开启, config/development.conf.php 文件中有以下配置代码:

// 别名
'aliases' => [
    '@yii/gii' => '@wii/wii2/vendor/yiisoft/yii2-gii',
    '@bower' => '@wii/wii2/vendor/bower'
],
// 模块配置
'modules' => [
    'gii' => [
        'class' => 'yii\gii\Module',
        'allowedIPs' => [
            '61.135.172.68',
            '10.22.120.71',
            '127.0.0.1',
        ],
        'generators' => [
            'waucrud' => [
                'class' => 'wii\wiigii\waucrud\Generator',
            ],
            'wiimodel' => [
                'class' => 'wii\wiigii\wiimodel\Generator',
            ],
        ]
    ]
],

一般来说在BETA或线上配置也能打开gii,因为gii是个具有生成代码功能,所以是禁止在线上环境使用gii模块的

这段配置表明,如果当前是开发环境,应用会包含 gii 模块,模块类是 [[yii\gii\Module]],按照上面的配置会打开 Gii 模块。你可以直接通过 URL 访问 gii:

http://hostname/gii

信息:如果你通过本机以外的机器访问 Gii,请求会被出于安全原因拒绝。你可以配置 Gii 为其添加允许访问的 IP 地址:

'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // 按需调整这里
],

生成model类

选择 “wii2-model生成器” 下面的"Start"按钮去生成model类。并像这样填写表单:

  • 表名: tbl_user_detail
  • Model类名: UserDetailTest
  • 命名空间:app\models\test

表名、Model类名、命名空间等选项根据业务进行修改

然后点击 “Preview” 按钮。你会看到 models/Country.php 被列在将要生成的文件列表中。可以点击文件名预览内容。

├── UserDetailTest.php           用户自定义业务类
├── UserDetailTestBase.php       用户model基类(根据gii生成,不允许修改,只能通过gii生成,提供一些公用方法和属性) 
├── UserDetailTestPage.php       用户自定义业务分页类

如果你已经创建过同样的文件,使用 Gii 会覆写它,点击文件名旁边的 diff 查看现有文件与将要生成的文件的内容区别

想要覆写已存在文件,选中 “overwrite” 下的复选框然后点击 “Generator”。如果是新文件,只点击 “Generator” 就好。

接下来你会看到一个包含已生成文件的说明页面。如果生成过程中覆写过文件,还会有一条信息说明代码是重新生成覆盖的。

生成 CRUD 代码

CRUD 代表增,查,改,删操作,这是绝大多数 Web 站点常用的数据处理方式。选择Gii 中的 “wii2-waucrud生成器” (点击 Gii 首页的链接)去创建 CRUD 功能。本例中需要这样填写表单:

  • 表名: tbl_user_detail
  • model类名: app\models\test\UserDetailTest
  • 控制器名: app\modules\user\controllers\UserdetailtestController

然后点击 “Preview” 按钮。你会看到下述将要生成的文件列表。

models
├── test
│   ├── UserDetailTest.php                          用户自定义业务类
│   ├── UserDetailTestBase.php                      用户model基类(根据gii生成,不允许修改,只能通过gii生成,提供一些公用方法和属性)
│   ├── UserDetailTestChart.php                     用户图形场景
│   ├── UserDetailTestPage.php                      用户自定义业务分页类
│   └── echartshow                                  echart图形展示逻辑
│       ├── UserDetailTestBarType.php               柱状图形逻辑类
│       ├── UserDetailTestLineType.php              线型图形逻辑类
│       └── UserDetailTestPieType.php               圆形图形逻辑类
modules
├── api                                             我们所有api统一放在这个模块,controller下又按模块去划分
│   └── controllers
│       └── user                                    user模块下的api
│           └── userdetailtest                      user模块下userdetailtest的action逻辑
│               ├── ChartAction.php                 图形逻辑action
│               ├── DelAction.php                   删除逻辑action
│               ├── DetailAction.php                详情逻辑action
│               ├── ListAction.php                  列表逻辑action
│               └── SaveAction.php                  保存逻辑action,包括添加和编辑
├── user                                            user模块文件夹
│   ├── Module.php                                  user模块定义文件
│   ├── controllers                                 user模块controller文件
│   │   ├── UserdetailtestController.php            Userdetailtest控制器,用于编写页面展示的action,如CRUD的展现页面
│   │   ├── UserdetailtestapiController.php         Userdetailtestapi控制器,编写api的action,里面的action都是引用api模块下对应的action文件
│   └── views                                       视图文件,以yml结尾都是wau定义的视图文件
│       ├── userdetailtest
│       │   ├── chart.yml
│       │   ├── detail.yml
│       │   ├── list.yml
│       │   ├── save.yml
│       │   └── sidebar.yml
views
├── common
│   └── header.yml                                  头部文件,一般用于定义导航栏,根据表注释会在导航添加一个导航栏项

运行

用浏览器访问下面的 URL 查看生成代码的运行:

http://hostname/user/userdetailtest/list

可以看到表格显示着从数据表中读取的用户数据。支持在列头对数据进行排序, 输入筛选条件进行筛选。

可以浏览详情、编辑、删除表格中的数据,还可以点击表格右上方的 “新建” 按钮通过表单创建新数据。

信息:Gii 被设计成高度可定制和可扩展的代码生成工具。 使用它可以大幅提高应用开发速度。 请参考 Gii 章节了解更多内容。

总结

本章学习了如何使用 Gii 生成为数据表中数据实现完整 CRUD 功能的代码

results matching ""

    No results matching ""