我们使用一个例子来介绍如何定制代码模板。假设我们想要定制由 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
    Yii2  自定义Gii生成代码模板

    可以把自己扩展的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 指定目录中先出现的生成器有优先权 。

    相关文章:

    • 2021-11-06
    • 2021-05-25
    • 2022-12-23
    • 2021-10-31
    • 2021-11-08
    • 2021-12-02
    • 2021-12-27
    • 2021-04-18
    猜你喜欢
    • 2022-12-23
    • 2021-04-30
    • 2021-06-30
    • 2022-12-23
    • 2021-11-18
    • 2022-12-23
    • 2021-11-02
    相关资源
    相似解决方案