我们使用一个例子来介绍如何定制代码模板。假设我们想要定制由 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() 来翻译属性标签:

  1. public function attributeLabels()
  2. {
  3. return array(
  4. <?php foreach($labels as $name=>$label): ?>
  5. <?php echo "'$name' => Yii::t('application', '$label'),\n"; ?>
  6. <?php endforeach; ?>
  7. );
  8. }

在每个代码模板中,我们可以访问一些预定义的变量,例如上面例子中的 $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放到项目目录下面,配置如下

  1. 'modules' => array(
  2. 'gii' => array(
  3. 'class' => 'system.gii.GiiModule',
  4. 'password' => 'gii',
  5. 'generatorPaths' => array(
  6. 'application.gii.generators',//项目目录结构
  7. ),
  8. 'ipFilters' => array('127.0.0.1', '::1'),
  9. ),
  10. ),

上面的配置告诉
Gii在别名是application.gii.generators的目录中寻找生成器,以及默认的framework位置
system.gii.generators在不同的搜索路径有同名的生成器也是可以的。这种情况下,在
GiiModule::generatorPaths 指定目录中先出现的生成器有优先权

Yii2 自定义Gii生成代码模板的更多相关文章

  1. yii2使用Gii生成代码

    本章节将介绍怎样使用 Gii 去自己主动生成 Web 网站经常使用功能的代码.使用 Gii 生成代码很easy,仅仅要依照 Gii 页面上的介绍输入正确的信息就可以. 贯穿本章节,你将会学到: 在你的 ...

  2. yii2 使用gii生成代码文件

    访问地址: http://localhost/yii2-test/web/index.php?r=gii  如果你通过本机以外的机器访问 Gii,请求会被出于安全原因拒绝. 在web.php修改gii ...

  3. yii2 用gii生成后台模块 view path描述

    view path 格式: @backend/views/refund , 注意@和/

  4. Yii2的相关学习记录,自定义gii模板和引用vendor中的js、css(四)

    上文中后台模板框架已经搭建起来了,但还是有些不协调,像是有两个User标题,或者我们想自己在gii生成时添加或删除些公用的东西.这就需要我们定义自己的gii模板. 我们以CRUD的模板为例,默认的gi ...

  5. YII2使用gii

    在 config/web.php 文件中会有以下配置代码开启该模块: $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'cl ...

  6. Yii2.0 自动生成 model 层

    yii2.0 里一个表对应一个model,可以自动生成 前台使用的model在frontend(backend)/web目录下的gii生成例如(www.liqiuyue.com/yii /fronte ...

  7. Maven之自定义archetype生成项目骨架(一)

      Maven之自定义archetype生成项目骨架(一) 标签: mavennexus插件 2015-07-15 16:40 2443人阅读 评论(0) 收藏 举报  分类: Maven技术(9)  ...

  8. ThinkPHP 类似Yii的Gii生成Model的功能。

    ThinkPHP 类似Yii的Gii生成Model的功能.自动生成ThinkPhp 3.1 的基础模型.. #!/usr/bin/env php <?php /** * * THINKPHP 基 ...

  9. Maven之自定义archetype生成项目骨架

    Maven之自定义archetype生成项目骨架(一) http://blog.csdn.net/sxdtzhaoxinguo/article/details/46895013

随机推荐

  1. phpcms V9 首页模板文件解析(转)

    转自:http://www.cnblogs.com/Braveliu/p/5100018.html 转在了解了<phpcms V9 URL访问解析>之后,我们已经知道首页最终执行的是con ...

  2. 查看文章 mysql:表注释和字段注释[转]

    1 创建表的时候写注释 create table test1 ( field_name int comment '字段的注释' )comment='表的注释'; 2 修改表的注释 alter tabl ...

  3. MySQL数据库的热备份和冷备份

    冷备份(off, 慢, 时间点上恢复)冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库.冷备份是将关键性文件拷贝到另外位置的一种说法.对于备份数据库信息而言,冷备份是最 ...

  4. Quartz1.8.5例子(十一)

    /* * Copyright 2005 - 2009 Terracotta, Inc. * * Licensed under the Apache License, Version 2.0 (the ...

  5. redis基本命令的演示:

    import redis r = redis.Redis(host='127.0.0.1', port=6379,db = 0) #查看匹配redis的数据 r.keys() #查看redis的大小 ...

  6. BZOJ 1571: [Usaco2009 Open]滑雪课Ski

    Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S& ...

  7. Setup SQL Server 2008 Maintenance Plan Email Notifications

    一条龙作完,如何设置EXCHANGE的操作员邮件通知.. ~~~~ http://808techblog.com/2009/07/setup-sql-server-2008-maintena.html ...

  8. 基于Spring Boot构建的Spring MVC快速入门

    原文地址:http://tianmaying.com/tutorial/spring-mvc-quickstart 环境准备 一个称手的文本编辑器(例如Vim.Emacs.Sublime Text)或 ...

  9. ANDROID_MARS学习笔记_S04_005_用sing-post向腾讯微博发一条信息

    一.代码流程 1.组织好sign-post需要的token,secrect 2.组织好发微博需要的信息 3.用sign-post进行签名 4.把签名结果从header中拿出来,转成entity,用ht ...

  10. 控件构造函数需要的AOwner是TComponent,而不是Parent

    普通控件都只有一个构造函数,但是这个构造函数却强迫指定AOwner,也就是说,VCL希望将所有控件(至少是所有可视化控件)全部置于它的管理之下.至于到底显示不显示,那是另一个层次的问题.这个问题其实挺 ...