Yii2学习笔记系列6——Generating Code With Gii(使用Gii生成代码)

六 09 四月 2016

Yii2笔记系列6——Generating Code With Gii(使用Gii生成代码)

在上一篇学习笔记中,我们学习了如何连接数据库以及如何编写查询代码来分页读取数据库记录,这篇我们来学习一下如何通过Gii生成这些功能的代码。使用Gii生成代码非常简单,只要按照Gii页面上的介绍信息输入正确的信息即可。

本篇中,我们将要学习到的知识点有:

  • 在应用中开启Gii
  • 使用Gii生成活动记录类
  • 使用Gii生成数据表操作的增查删改(CRUD)代码
  • 自定义Gii生成的代码

开启Gii

Gii是Yii中的一个模块,可以通过yii\base\Application::modules属性开启它,通常的,在config/web.php文件中会有以下的配置代码:

<?php

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}
?>

这段代码表明,如果当前是开发环境,应用会包含Gii模块,模块类是yii\gii\Module

如果你检查应用的入口脚本web/index.php,会看到有以下的代码将YII_ENV设为dev:

<?php

defined('YII_ENV') or define('YII_ENV', 'dev');
?>

鉴于这行代码的定义,应用处于开发模式下,按照上面的配置会打开Gii模块,你可以直接通过以下的URL访问Gii:

http://hostname/index.php?r=gii

补充:通过本机以外的机器访问Gii的话,出于安全原因会被禁止,这种情况下可以为Gii配置允许访问的IP地址:

<?php

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

img

生成活动记录类

选择“Model Generator”,填写表单内容:

  • Table Name:country
  • Model Class:Country

img

点击“Preview”按钮,可以看到models/Country.php被列在将要生成的文件列表中,可以点击文件名预览内容。同时,如果你之前已经创建过相同的文件,使用Gii会覆写它,点击文件名旁边的“diff”可以查看已有的文件与即将要生成的文件的内容差异。

img

如果要覆盖已有的文件,只需要勾选文件名最右侧的“override”,然后点击“Generate”即可。如果是新文件,直接点击“Generate”就好。

生成CRUD代码

CRUD代表增,查,改,删操作,这是绝大多数Web站点常用的数据处理方式,点击“CRUD Generator”即可,本例中需要这样填写表单:

  • Model Class: app\models\Country
  • Search Class: app\models\CountrySearch
  • Controller Class: app\controllers\CountryController

img

点击“Preview”按钮可以看到本次将要生成的所有文件的列表,因为我们之前创建过controllers/CountryController.phpviews/country/index.php,选中全部的文件勾选“override”覆盖掉之前的就可以,因为我们之前编写的文件没有完全支持CRUD。

试运行:

http://hostname/web/index.php?r=country/index

img

支持增删查改等各项操作,可以通过”Create Country“按钮生成国家数据,也支持点击标题头进行排序操作。

这就是通过Gii生成CRUD完整功能代码的示例了,这些就可以算是最基本的Getting Start部分了,从下一篇开始,我们将要Look Ahead,从应用结构开始更深入的学习了解Yii。

Category: PHP Develop

Comments