View on GitHub

yii2-cookbook-chinese

Yii Application Development Cookbook(Third Edition)中文翻译

Gii代码生成器

这个扩展为Yii2应用提供了一个基于web的代码生成器,名叫Gii。你可以使用Gii来快速生成模型、表单、模块、CRUD等等。

准备

  1. 按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的应用。
  2. 使用shell命令创建一个新的migration:
php yii migrate/create create_customer_table
  1. 将如下代码放在up()down()两个方法中:
use yii\db\Schema;
use yii\db\Migration;
class m160201_154207_create_customer_table extends Migration
{
    public function up()
    {
        $tableOptions = null;
        if ($this->db->driverName === 'mysql') {
            $tableOptions =
                'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
        }
        $this->createTable('', [
            'id' => Schema::TYPE_PK,
            'name' => Schema::TYPE_STRING . ' NOT NULL',
            'email' => Schema::TYPE_STRING . ' NOT NULL',
            'address' => Schema::TYPE_STRING,
        ], $tableOptions);
    }
    public function down()
    {
        $this->dropTable('');
    }
}
  1. 应用这个migration:
php yii migrate/up

如何做…

在你的项目中,你可以以两种方式使用这个扩展:

使用GUI

  1. 检查你的web配置是否包含如下代码:
if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}
  1. 你的web/index.php文件将会定义开发环境:
defined('YII_ENV') or define('YII_ENV', 'dev');

先前的配置表明,如果是在开发环境中,这个应用将会包含一个名叫gii的模块,它的类是yii\gii\Module

默认情况下,这个模块允许IP地址为127.0.0.1访问。如果你在其它地方访问,将你的IP地址添加到allowedIPs属性中:

$config['modules']['gii'] = [
    'class' => 'yii\gii\Module',
    allowedIPs = ['127.0.0.1', '::1', '192.168.0.*'],
];
  1. 访问http://localhost/index.php?r=gii

  1. 点击模型生成器按钮,在表单中填写你的标明和模型名:

  1. 点击预览按钮。你能看到文件列表:

  1. 如果想重新生成已经存在的文件,Gii将会用黄色标记:

  1. 在这种情况下,你可以查看存在的文件和新文件之间的区别,如果需要就覆盖目标。
  2. 做完这些以后,点击生成按钮:

  1. 检查新的类,\app\models\Customer
  2. CRUD是一个缩写,代表四种常用的任务:创建、读取、更新和删除。为了使用Gii创建CRUD,选择CRUD生成器部分。指定你的模型类,并输出其它字段:

  1. 生成新的条目:

  1. 然后,尝试打开新的控制器:

  1. 你将会看到一个数据grid,展示了数据表中的消费者数据。尝试创建一个新的条目,你可以对这个表格进行排序或者在列头上输入过滤条件进行过滤。

使用CLI

Gii为代码生成提供了一个控制台控制器:

  1. 检查你的控制台配置是否包含Gii模块设置:
return [
    // ...
    'modules' => [
        'gii' => 'yii\gii\Module',
    ],
    // ...
];
  1. 运行任何shell命令获取帮助:
php yii help gii
php yii help gii/model
  1. 输出如下命令启动一个模型生成过程:
php yii gii/model --tableName=customer --modelClass=Customer --useTablePrefix=1
  1. 检查新的类\app\models\Customer
  2. 为你的模型生成CRUD:
php yii gii/crud --modelClass=app\\models\\Customer \
    --searchModelClass=app\\models\\CustomerSearch \
    --controllerClass=app\\controllers\\CustomerController

工作原理…

Gii允许你生成一些标准代码元素,而不是手动输入。它提供了基于web的和控制台接口来使用每一个生成器。

参考