zoukankan      html  css  js  c++  java
  • 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() 来翻译属性标签:

    1. public function attributeLabels()  
    2. {  
    3.     return array(  
    4. <?php foreach($labels as $name=>$label): ?>  
    5.             <?php echo "'$name' => Yii::t('application', '$label'), "; ?>  
    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 指定目录中先出现的生成器有优先权 。

  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/xp796/p/5443924.html
Copyright © 2011-2022 走看看