位置:首頁 > 框架 > Yii2教學 > 使用Gii生成代碼

使用Gii生成代碼

使用 Gii 生成代碼

本章節將介紹如何使用 Gii 去自動生成 Web 站點常用功能的代碼。使用 Gii 生成代碼非常簡單,隻要按照 Gii 頁麵上的介紹輸入正確的信息即可。

貫穿本章節,你將會學到:

  • 在你的應用中開啟 Gii
  • 使用 Gii 去生成活動記錄類
  • 使用 Gii 去生成數據表操作的增查改刪(CRUD)代碼
  • 自定義 Gii 生成的代碼

開始 Gii

Gii 是 Yii 中的一個模塊。可以通過配置應用的 [[yiiaseApplication::modules|modules]] 屬性開啟它。通常來講在 config/web.php 文件中會有以下配置代碼:

$config = [ ... ];

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = 'yiigiiModule';
}

這段配置的意思是如果當前是開發環境,應用會包含 gii 模塊,模塊類是 [[yiigiiModule]]。

如果你檢查應用的入口腳本 web/index.php,將看到這行代碼將 YII_ENV_DEV 設為 true:

defined('YII_ENV') or define('YII_ENV', 'dev');

代碼設置應用處於開發模式下,按照上麵的配置會打開 Gii 模塊。你可以直接通過 URL 訪問 Gii:

http://hostname/index.php?r=gii

Gii

生成活動記錄類

選擇 “Model Generator” (點擊 Gii 首頁的鏈接)去生成活動記錄類。並像這樣填寫表單:

  • Table Name: country
  • Model Class: Country

模型生成器

然後點擊 “Preview” 按鈕。你會看到 models/Country.php 被列在將要生成的文件列表中。可以點擊文件名預覽內容。

如果你已經創建過同樣的文件,使用 Gii 可以覆寫它,點擊文件名旁邊的 diff 能查看現有文件與將要生成的文件的內容區彆。

模型生成器預覽

想要覆寫已存在文件,選中 “overwrite” 下的複選框然後點擊 “Generator”。如果是新文件,隻點擊 “Generator” 就好。

接下來你會看到一個包含已生成文件的說明頁麵。如果生成過程中覆寫過文件,還會有一條信息說明代碼是重新生成覆蓋的。

生成 CRUD 代碼

CRUD 代表增,查,改,刪操作,這是絕大多數 Web 站點常用的數據處理方式。選擇 Gii 中的 “CRUD Generator” (點擊 Gii 首頁的鏈接)去創建 CRUD 功能。之前的 “country” 例子需要像這樣填寫表單:

  • Model Class: appmodelsCountry
  • Search Model Class: appmodelsCountrySearch
  • Controller Class: appcontrollersCountryController

CRUD 生成器

然後點擊 “Preview” 按鈕。你會看到下述將要生成的文件列表。

[[NEED THE IMAGE HERE / 等待官方補充圖片]]

如果你之前創建過 controllers/CountryController.php 和 views/country/index.php 文件(在指南的使用數據庫小節),選中 “overwrite” 下的複選框覆寫它們(之前的文件冇能全部支持 CRUD)。

嘗試下

用瀏覽器訪問下麵的 URL 查看生成代碼的運行:

http://hostname/index.php?r=country/index

可以看到一個柵格顯示著從數據表中獲取的國家數據。支持在列頭對數據進行排序,輸入篩選條件進行篩選。

可以瀏覽詳情,編輯,或刪除柵格中的每個國家。還可以點擊柵格上方的 “Create Country” 按鈕通過表單創建新國家。

國家的數據柵格

編輯一個國家

下麵列出由 Gii 生成的文件,以便你研習功能和實現,或修改它們。

  • 控製器:controllers/CountryController.php
  • 模型:models/Country.php 和 models/CountrySearch.php
  • 視圖:views/country/*.php

補充:Gii 被設計成高度可定製和可擴展的代碼生成工具。使用它可以大幅提高應用開發速度。請參考 Gii 小節了解更多內容。

總結

本章學習了如何使用 Gii 去生成為數據表中數據實現完整 CRUD 功能的代碼。