Gii代码生成器
这个扩展为Yii2应用提供了一个基于web的代码生成器,名叫Gii。你可以使用Gii来快速生成模型、表单、模块、CRUD等等。
准备
- 按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的应用。
- 使用shell命令创建一个新的migration:
php yii migrate/create create_customer_table
- 将如下代码放在
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('');
}
}
- 应用这个migration:
php yii migrate/up
如何做…
在你的项目中,你可以以两种方式使用这个扩展:
- 使用GUI
- 使用CLI
使用GUI
- 检查你的web配置是否包含如下代码:
if (YII_ENV_DEV) {
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
- 你的
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.*'],
];
- 访问
http://localhost/index.php?r=gii
:
- 点击
模型生成器
按钮,在表单中填写你的标明和模型名:
- 点击预览按钮。你能看到文件列表:
- 如果想重新生成已经存在的文件,Gii将会用黄色标记:
- 在这种情况下,你可以查看存在的文件和新文件之间的区别,如果需要就覆盖目标。
- 做完这些以后,点击生成按钮:
- 检查新的类,
\app\models\Customer
。 - CRUD是一个缩写,代表四种常用的任务:创建、读取、更新和删除。为了使用Gii创建CRUD,选择CRUD生成器部分。指定你的模型类,并输出其它字段:
- 生成新的条目:
- 然后,尝试打开新的控制器:
- 你将会看到一个数据grid,展示了数据表中的消费者数据。尝试创建一个新的条目,你可以对这个表格进行排序或者在列头上输入过滤条件进行过滤。
使用CLI
Gii为代码生成提供了一个控制台控制器:
- 检查你的控制台配置是否包含Gii模块设置:
return [
// ...
'modules' => [
'gii' => 'yii\gii\Module',
],
// ...
];
- 运行任何shell命令获取帮助:
php yii help gii
php yii help gii/model
- 输出如下命令启动一个模型生成过程:
php yii gii/model --tableName=customer --modelClass=Customer --useTablePrefix=1
- 检查新的类
\app\models\Customer
: - 为你的模型生成CRUD:
php yii gii/crud --modelClass=app\\models\\Customer \
--searchModelClass=app\\models\\CustomerSearch \
--controllerClass=app\\controllers\\CustomerController
工作原理…
Gii允许你生成一些标准代码元素,而不是手动输入。它提供了基于web的和控制台接口来使用每一个生成器。
参考
- 欲了解关于这个扩展的更多信息,参考:
- 对于MongoDB集成,参考第八章扩展Yii中的创建一个小组件小节