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'),\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 指定目錄中先出現的生成器有優先權 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM