本节将介绍如何使用 Gii 自动生成代码来实现一些常见的网站功能。使用 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_DEV
为 true
。
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 首页上的链接)。然后填写表单,如下所示
country
Country
接下来,单击“预览”按钮。您将在生成的要创建的类文件中看到 models/Country.php
。您可以单击类文件的名称以预览其内容。
在使用 Gii 时,如果您已创建相同的文件并且将覆盖它,请单击文件名旁边的 diff
按钮以查看要生成的代码与现有版本之间的差异。
覆盖现有文件时,选中“覆盖”旁边的复选框,然后点击“生成”按钮。如果创建新文件,只需点击“生成”即可。
接下来,您将看到一个确认页面,指示代码已成功生成。如果您有现有文件,您还会看到一条消息,指示它已被新生成的代码覆盖。
CRUD代表创建、读取、更新和删除,代表大多数网站上对数据执行的四项常见任务。要使用Gii创建CRUD功能,请选择“CRUD生成器”(通过点击Gii索引页面上的链接)。对于“country”示例,请按如下方式填写生成的表单
app\models\Country
app\models\CountrySearch
app\controllers\CountryController
接下来,点击“预览”按钮。您将看到要生成的文件列表,如下所示。
如果您之前创建了controllers/CountryController.php
和views/country/index.php
文件(在指南的数据库部分),请选中“覆盖”框以替换它们。(以前的版本没有完整的CRUD支持。)
要查看其工作原理,请使用浏览器访问以下URL
https://hostname/index.php?r=country%2Findex
您将看到一个数据网格,显示数据库表中的国家/地区。您可以对网格进行排序,或通过在列标题中输入筛选条件对其进行筛选。
对于网格中显示的每个国家/地区,您可以选择查看其详细信息、更新它或删除它。您还可以点击网格顶部的“创建国家/地区”按钮,以获得用于创建新国家/地区的表单。
以下是Gii生成的文件列表,如果您想调查这些功能是如何实现的,或对其进行自定义,请参考以下列表
controllers/CountryController.php
models/Country.php
和models/CountrySearch.php
views/country/*.php
信息:Gii旨在成为一个高度可定制且可扩展的代码生成工具。明智地使用它可以大大加快您的应用程序开发速度。有关更多详细信息,请参阅Gii部分。
在本节中,您学习了如何使用Gii生成实现数据库表中存储内容的完整CRUD功能的代码。
发现错别字或您认为此页面需要改进?
在github上编辑它 !
这些说明没有告诉您需要编辑models\Country.php以添加
如果已执行之前的Gii示例,则需要此操作才能使其正常工作。
如果您在docker容器中运行Yii,则必须允许主机IP,它不是127.0.0.1。一开始可能不太明显。
阅读更多:https://github.com/yiisoft/yii2-app-basic/issues/192
您好*,CRUD生成器模板vendor/yiisoft/yii2-gii/src/generators/crud/default/views/index.php在第69行存在错误
解决方案:将$modelClass更改为$generator->modelClass
Before: 'urlCreator' => function ($action, <?= $modelClass ?> ... After: 'urlCreator' => function ($action, <?= $generator->modelClass ?> ...
@jheym
不,
在第9行,您有
因此,其中没有错误。
注册注册或登录以发表评论。