yii2使用Gii生成代码
本章节将介绍怎样使用 Gii 去自己主动生成 Web 网站经常使用功能的代码。使用 Gii 生成代码很easy,仅仅要依照 Gii 页面上的介绍输入正确的信息就可以。
贯穿本章节,你将会学到:
- 在你的应用中开启 Gii
- 使用 Gii 去生成活动记录类
- 使用 Gii 去生成数据表操作的增查改删(CRUD)代码
- 自己定义 Gii 生成的代码
開始 Gii
Gii 是 Yii 中的一个模块。能够通过配置应用的 [[yii\base\Application::modules|modules]] 属性开启它。
通常来讲在 config/web.php
文件里会有下面配置代码:
$config = [ ... ]; if (YII_ENV_DEV) {
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = '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:
http://hostname/index.php? r=gii
生成活动记录类
选择 “Model Generator” (点击 Gii 首页的链接)去生成活动记录类。并像这样填写表单:
- Table Name:
country
- Model Class:
Country
然后点击 “Preview” button。你会看到 models/Country.php
被列在将要生成的文件列表中。
能够点击文件名称预览内容。
假设你已经创建过相同的文件,使用 Gii 能够覆写它,点击文件名称旁边的 diff
能查看现有文件与将要生成的文件的内容差别。
想要覆写已存在文件。选中 “overwrite” 下的复选框然后点击 “Generator”。
假设是新文件,仅仅点击 “Generator” 就好。
接下来你会看到一个包括已生成文件的说明页面。
假设生成过程中覆写过文件。还会有一条信息说明代码是又一次生成覆盖的。
生成 CRUD 代码
CRUD 代表增。查,改,删操作,这是绝大多数 Web 网站经常使用的数据处理方式。选择 Gii 中的 “CRUD Generator” (点击 Gii 首页的链接)去创建 CRUD 功能。
之前的 “country” 样例须要像这样填写表单:
- Model Class:
app\models\Country
- Search Model Class:
app\models\CountrySearch
- Controller Class:
app\controllers\CountryController
然后点击 “Preview” button。你会看到下述将要生成的文件列表。
[[NEED THE IMAGE HERE / 等待官方补充图片]]
假设你之前创建过 controllers/CountryController.php
和 views/country/index.php
文件(在指南的使用数据库小节),选中
“overwrite” 下的复选框覆写它们(之前的文件没能所有支持 CRUD)。
尝试下
用浏览器訪问以下的 URL 查看生成代码的执行:
http://hostname/index.php?r=country/index
能够看到一个栅格显示着从数据表中获取的国家数据。
支持在列头对数据进行排序,输入筛选条件进行筛选。
能够浏览详情,编辑,或删除栅格中的每一个国家。
还能够点击栅格上方的 “Create Country”button通过表单创建新国家。
以下列出由 Gii 生成的文件。以便你研习功能和实现,或改动它们。
- 控制器:
controllers/CountryController.php
- 模型:
models/Country.php
和models/CountrySearch.php
- 视图:
views/country/*.php
补充:Gii 被设计成高度可定制和可扩展的代码生成工具。 使用它能够大幅提高应用开发速度。请參考 Gii 小节了解很多其它内容。
yii2使用Gii生成代码的更多相关文章
- yii2 使用gii生成代码文件
访问地址: http://localhost/yii2-test/web/index.php?r=gii 如果你通过本机以外的机器访问 Gii,请求会被出于安全原因拒绝. 在web.php修改gii ...
- yii2.0的gii生成代码bug
自动生成代码真的很好用,能减少很多基础代码的编写,如果这些基础代码一个个手动去敲,即枯燥乏味,还容易出错(话说人类真的不适合做单调重复的工作),yii框架的gii自动生成代码工具就能减少很多工作量.前 ...
- Yii2 自定义Gii生成代码模板
我们使用一个例子来介绍如何定制代码模板.假设我们想要定制由 model 生成器生成的代码. 我们首先创建一个名为 protected/gii/model/templates/customer 的目录. ...
- yii2 用gii生成后台模块 view path描述
view path 格式: @backend/views/refund , 注意@和/
- PHP.27-TP框架商城应用实例-后台4-使用Gii生成品牌表的代码
Gii安装[GII适用于商城项目] 将Gii文件夹复到application 是,访问http://xx.com/index.php/gii Gii规则[Gii使用规则与建表规则密切相关] 1.建表字 ...
- YII2使用gii
在 config/web.php 文件中会有以下配置代码开启该模块: $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'cl ...
- ThinkPHP 类似Yii的Gii生成Model的功能。
ThinkPHP 类似Yii的Gii生成Model的功能.自动生成ThinkPhp 3.1 的基础模型.. #!/usr/bin/env php <?php /** * * THINKPHP 基 ...
- Yii2.0 自动生成 model 层
yii2.0 里一个表对应一个model,可以自动生成 前台使用的model在frontend(backend)/web目录下的gii生成例如(www.liqiuyue.com/yii /fronte ...
- Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架
前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...
随机推荐
- 简易google地图api调用
代码如下: <!DOCTYPE html> <html> <head> <meta name="viewport" content=&qu ...
- 关于asp.net中cookie在调试过程中读写正常发布后乱码问题
最近在做的项目发布后出现了乱码的问题,既然出现了乱码很大的可能性是跟编码有关系,所以首先的解决方案就是重新对cookie进行编码, 在写入的cookie的时候编码,在读取的时候解码 在写入cookie ...
- iOS使用阿里云OSS对象存储 (SDK 2.1.1)
最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所 ...
- C++学习之DLL注入
#include<stdio.h> #include<Windows.h> #include<TlHelp32.h> //typedef unsigned long ...
- linux进程创建
1. 进程是程序的执行,会被加载到内存中,每个进程包括程序的代码和数据,其中数据包括程序的变量的数据,外部数据,程序堆栈. 2. Linux中,输入命令,如vi main.c 通过shell来执行, ...
- 【USACO 3.1.3】丑数
[描述] 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它).这是 ...
- 【USACO 2.4.2】穿越栅栏
[描述] 农夫John在外面的田野上搭建了一个巨大的用栅栏围成的迷宫.幸运的是,他在迷宫的边界上留出了两段栅栏作为迷宫的出口.更幸运的是,他所建造的迷宫是一个“完美的”迷宫:即你能从迷宫中的任意一点找 ...
- #define和const的简单区别
面试常问:宏#define和const有什么区别? 1.编译器处理方式 define宏是在预处理阶段展开 const常量是在编译阶段使用 2.类型和安全检查不同 define宏没有类型,不做安全检查, ...
- 46 Permutations(全排列Medium)
题目意思:全排列 思路:其实看这题目意思,是不太希望用递归的,不过还是用了递归,非递归的以后再搞吧 ps:vector这玩意不能随便返回,开始递归方法用vector,直接到500ms,换成void,到 ...
- Ecshop 数据库操作方法getRow、getAll、getOne区别
ECShop没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,大大减小了分发包的文件大小.另外,当网站需要做memcached缓存时,也可以 ...