6 关注者

使用 Gii 生成代码

本节将介绍如何使用 Gii 自动生成代码来实现一些常见的网站功能。使用 Gii 自动生成代码只需在 Gii 网页上根据说明输入正确的信息即可。

通过本教程,您将学习如何

  • 在您的应用程序中启用 Gii,
  • 使用 Gii 生成 Active Record 类,
  • 使用 Gii 生成实现数据库表 CRUD 操作的代码,
  • 自定义 Gii 生成的代码。

启动 Gii

Gii 在 Yii 中作为一个 模块 提供。您可以通过在应用程序的 modules 属性中配置它来启用 Gii。根据您创建应用程序的方式,您可能会发现以下代码已在 config/web.php 配置文件中提供

$config = [ ... ];

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}

上述配置表明,在 开发环境 中,应用程序应包含一个名为 gii 的模块,该模块的类为 yii\gii\Module

如果您检查应用程序的 入口脚本 web/index.php,您会发现以下行,它实际上使 YII_ENV_DEVtrue

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

由于该行,您的应用程序处于开发模式,并且根据上述配置已启用 Gii。您现在可以通过以下 URL 访问 Gii

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

注意:如果您从 localhost 以外的机器访问 Gii,则出于安全目的,默认情况下将拒绝访问。您可以配置 Gii 以添加允许的 IP 地址,如下所示:

'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adjust this to your needs
],

Gii

生成 Active Record 类

要使用 Gii 生成 Active Record 类,请选择“模型生成器”(通过单击 Gii 首页上的链接)。然后填写表单,如下所示

  • 表名:country
  • 模型类:Country

Model Generator

接下来,单击“预览”按钮。您将在生成的要创建的类文件中看到 models/Country.php。您可以单击类文件的名称以预览其内容。

在使用 Gii 时,如果您已创建相同的文件并且将覆盖它,请单击文件名旁边的 diff 按钮以查看要生成的代码与现有版本之间的差异。

Model Generator Preview

覆盖现有文件时,选中“覆盖”旁边的复选框,然后点击“生成”按钮。如果创建新文件,只需点击“生成”即可。

接下来,您将看到一个确认页面,指示代码已成功生成。如果您有现有文件,您还会看到一条消息,指示它已被新生成的代码覆盖。

生成CRUD代码

CRUD代表创建、读取、更新和删除,代表大多数网站上对数据执行的四项常见任务。要使用Gii创建CRUD功能,请选择“CRUD生成器”(通过点击Gii索引页面上的链接)。对于“country”示例,请按如下方式填写生成的表单

  • 模型类:app\models\Country
  • 搜索模型类:app\models\CountrySearch
  • 控制器类:app\controllers\CountryController

CRUD Generator

接下来,点击“预览”按钮。您将看到要生成的文件列表,如下所示。

CRUD Generator Preview

如果您之前创建了controllers/CountryController.phpviews/country/index.php文件(在指南的数据库部分),请选中“覆盖”框以替换它们。(以前的版本没有完整的CRUD支持。)

试用

要查看其工作原理,请使用浏览器访问以下URL

https://hostname/index.php?r=country%2Findex

您将看到一个数据网格,显示数据库表中的国家/地区。您可以对网格进行排序,或通过在列标题中输入筛选条件对其进行筛选。

对于网格中显示的每个国家/地区,您可以选择查看其详细信息、更新它或删除它。您还可以点击网格顶部的“创建国家/地区”按钮,以获得用于创建新国家/地区的表单。

Data Grid of Countries

Updating a Country

以下是Gii生成的文件列表,如果您想调查这些功能是如何实现的,或对其进行自定义,请参考以下列表

  • 控制器:controllers/CountryController.php
  • 模型:models/Country.phpmodels/CountrySearch.php
  • 视图:views/country/*.php

信息:Gii旨在成为一个高度可定制且可扩展的代码生成工具。明智地使用它可以大大加快您的应用程序开发速度。有关更多详细信息,请参阅Gii部分。

总结

在本节中,您学习了如何使用Gii生成实现数据库表中存储内容的完整CRUD功能的代码。

发现错别字或您认为此页面需要改进?
在github上编辑它 !