Yii2 自定义Gii生成代码模板
我们使用一个例子来介绍如何定制代码模板。假设我们想要定制由 model 生成器生成的代码。
我们首先创建一个名为 protected/gii/model/templates/customer 的目录。这里的model意味着我们将要
override 默认的 model
生成器。templates/customer意味着我们将增加一个新的代码模板集名为customer。复制文件
framework/gii/generators/model/templates/default/model.php 到
protected/gii/model/templates/customer。现在是时候做点真正的工作了。打开文件
protected/gii/model/templates/customer/model.php
以编辑它。记得这个文件将作为类似一个视图文件被使用,意味着它可以包含 PHP 表达式和语句。让我们更改模板以便生成的代码里
attributeLabels() 方法使用 Yii::t() 来翻译属性标签:
- public function attributeLabels()
- {
- return array(
- <?php foreach($labels as $name=>$label): ?>
- <?php echo "'$name' => Yii::t('application', '$label'),\n"; ?>
- <?php endforeach; ?>
- );
- }
在每个代码模板中,我们可以访问一些预定义的变量,例如上面例子中的 $labels
。这些变量由对应的代码生成器提供。不同的代码生成器可能在他们的代码模板中提供不同的变量。请认真阅读默认代码模板中的描述。
现在打开 model 代码生成器页面。点击 Code Template 输入框。我们应当看到一个下拉列表
,这个列表包含了我们新建的模板目录 customer。我们选择此模板生成代码文件。
框架生成Controller的模板为:framework/gii/generators/controller/templates/default/controller.php
框架生成Model的模板为:framework/gii/generators/model/templates/default/model.php
高级 )创建新的生成器
在framework/gii/generators创建widget文件夹,可以编写支持module的Crud Generator,moduleID下model class的写法application.modules.moduleID.models.modelClass
可以把自己扩展的gii放到项目目录下面,配置如下
- 'modules' => array(
- 'gii' => array(
- 'class' => 'system.gii.GiiModule',
- 'password' => 'gii',
- 'generatorPaths' => array(
- 'application.gii.generators',//项目目录结构
- ),
- 'ipFilters' => array('127.0.0.1', '::1'),
- ),
- ),
上面的配置告诉
Gii在别名是application.gii.generators的目录中寻找生成器,以及默认的framework位置
system.gii.generators在不同的搜索路径有同名的生成器也是可以的。这种情况下,在
GiiModule::generatorPaths 指定目录中先出现的生成器有优先权
。
Yii2 自定义Gii生成代码模板的更多相关文章
- yii2使用Gii生成代码
本章节将介绍怎样使用 Gii 去自己主动生成 Web 网站经常使用功能的代码.使用 Gii 生成代码很easy,仅仅要依照 Gii 页面上的介绍输入正确的信息就可以. 贯穿本章节,你将会学到: 在你的 ...
- yii2 使用gii生成代码文件
访问地址: http://localhost/yii2-test/web/index.php?r=gii 如果你通过本机以外的机器访问 Gii,请求会被出于安全原因拒绝. 在web.php修改gii ...
- yii2 用gii生成后台模块 view path描述
view path 格式: @backend/views/refund , 注意@和/
- Yii2的相关学习记录,自定义gii模板和引用vendor中的js、css(四)
上文中后台模板框架已经搭建起来了,但还是有些不协调,像是有两个User标题,或者我们想自己在gii生成时添加或删除些公用的东西.这就需要我们定义自己的gii模板. 我们以CRUD的模板为例,默认的gi ...
- YII2使用gii
在 config/web.php 文件中会有以下配置代码开启该模块: $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'cl ...
- Yii2.0 自动生成 model 层
yii2.0 里一个表对应一个model,可以自动生成 前台使用的model在frontend(backend)/web目录下的gii生成例如(www.liqiuyue.com/yii /fronte ...
- Maven之自定义archetype生成项目骨架(一)
Maven之自定义archetype生成项目骨架(一) 标签: mavennexus插件 2015-07-15 16:40 2443人阅读 评论(0) 收藏 举报 分类: Maven技术(9) ...
- ThinkPHP 类似Yii的Gii生成Model的功能。
ThinkPHP 类似Yii的Gii生成Model的功能.自动生成ThinkPhp 3.1 的基础模型.. #!/usr/bin/env php <?php /** * * THINKPHP 基 ...
- Maven之自定义archetype生成项目骨架
Maven之自定义archetype生成项目骨架(一) http://blog.csdn.net/sxdtzhaoxinguo/article/details/46895013
随机推荐
- 如何查看MySQL中每张表占用的空间大小
如题,找到MySQL中的information_schema表,这张表记录了所有数据库中表的信息,主要字段含义如下: TABLE_SCHEMA : 数据库名 TABLE_NAME:表名 ENGINE: ...
- ECharts使用记
系统开发厂商一直都使用基于Flash的图表解决方案,例如Fushioncharts.本人也曾略做研究,当时对js不熟,只能采用静态xml方式,颇为繁琐. 自从了解了html5的新特性,意识到基于Can ...
- Delphi接口
program Demo1; { Create Date: 2014-06-29 Author: P.S.M 1.接口Demo1 } {$APPTYPE CONSOLE} uses SysUtils; ...
- android 布局权重问题(转载)
//权重和父容器orientation有关 horizontal 指水平方向权重 android:layout_width vertical 指垂直方向权重 android:layout_he ...
- 内网DMZ外网之间的访问规则
当规划一个拥有DMZ的网络时候,我们可以明确各个网络之间的访问关系,可以确定以下六条访问控制策略. 1.内网可以访问外网 内网的用户显然需要自由地访问外网.在这一策略中,防火墙需要进行源地址转换. 2 ...
- html 各个标签初始化
html,body,div,ul,li,ol,h1,h2,h3,h4,h5,h6,span,input{ margin:0;padding:0;}body{font:12px/1.5em " ...
- 21个很棒的jQuery分页插件下载
分页是指将一个大内容划分为各种不同的页面,因此网站的分页是一个很重要的部分,必须让内容有组织性和易于访问.分页有各两种不同的方式,手动跟自动.最受欢迎简单和广泛的方法是jQuery插件.下面我们收集了 ...
- 50个实用的jQuery代码段让你成为更好的Web前端工程师
本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...
- capitalize()在Python中含义
Python为string对象提供了转换大小写的方法:upper() 和 lower(). 还不止这些,Python还为我们提供了首字母大写,其余小写的capitalize()方法, 以及所有单词首字 ...
- PS字体工具字体显示不出来
显示一个小点:搜索了各种答案,扩大字号(最大72)更改前景色和背景色,最正确的解释就是分辨率太低,我发现分辨率是1,一般的设置成300,1分辨率情况下可以在图层那选择文字图层,然后按ctrl+t,拉大 ...