標籤:
Moodle外掛程式開發系列——XMLDB編輯器
位置:網站管理>開發> XML編輯器
l XML編輯器是製作install.xml檔案的工具,而install.xml是指定Moodle建立資料庫表的規範檔案。
l 它將表/欄位/鍵/索引等的編輯變得簡單,使開發人員能夠將時間使用在編碼和改進上,而不是與XML檔案和手動編輯造成的錯誤。
l Moodle中,所有install.xml檔案均在每個外掛程式的db目錄下,該檔案通過一些點擊和按鍵就可以編輯(我們建議如此)。那些install.xml將包含所需的所有資訊,用於為支援每個RDBMS而產生特定的對象。
l 註:能夠很好地處理檔案,Web伺服器需要對所有db目錄的寫入權限(install.xml檔案本身)。如果無法點擊或載入或建立連結,這意味著你沒有建立/ db目錄,或是該目錄不可寫。
前提:外掛程式已經正常安裝,樣本外掛程式為simpledatabase,所屬外掛程式類型為Block(版塊)。
- 快速啟動
使用XML編輯器為新外掛程式來建立一個表:
l 外掛程式的db目錄,例如blocks/simpledatabase /db,確保網路伺服器擁有該目錄的寫入許可權。若沒有,參考修改許可權:
l Moodle中,導航到網站管理->開發-> XMLDB編輯器
l 你現在應該看到/blocks/simpledatabase/db中的XML資料庫的位置列表,並且建立按鈕應該是可以點擊的(藍色字型)。(如果你看到外掛程式目錄,但建立按鈕不能點,確保Web伺服器具有寫入權限這個目錄!)
l 單擊[建立]
這將在/blocks/simpledatabase/db目錄下建立一個新install.xml檔案。點擊[XML]可瀏覽install.xml內容,參考如下:
內容注釋:id為預設表主鍵,類型int,長度10,以及預設表名為 ‘block_simpledatabase’,而實際資料庫中表名問”mdl_block_simpledatabase”(預設表首碼為mdl_,自動添加)。
l 點擊[載入]。(這將install.xml檔案的內容載入到記憶體中)
l 單擊[編輯]
該頁面下可建立表,並對當前表操作。
l 點擊表名,即block_simpledatabase
可編輯表欄位、鍵、索引等資訊。
l 現在你可以使用XML編輯器,建立和編輯你的外掛程式表。
通過提示可編輯表,每個操作均可查看相應的sql或php代碼。
若已修改,頁面會提示“已修改,可儲存“類似提示,如。
示範操作:添加欄位
1) 點擊“建立欄位“
2) 填寫新欄位資訊,然後點擊“更改“
這是頁面已提示有更改,下方顯示新增欄位資訊,同時[儲存]按鈕也顯示處理,此時點擊[儲存],才會新欄位資訊儲存早install.xml檔案中。
3) 查看install.xml內容
回到XMLDB編輯器列表,開啟對應的xml檔案,內容如下:
特別注意:儲存後,需要卸載掉該外掛程式,重新安裝,只有這樣,外掛程式資料庫表才會建立。
Install.xml其實只是記錄外掛程式的資料庫表的結構,而不是實際的資料庫表的操作。
外掛程式的升級, 需要手動在db目錄下建立一個upgrade.php檔案。這個upgrade.php檔案應該看起來像這樣:
<?php
function xmldb_mymodule_upgrade($oldversion) {
global$CFG;
$result= TRUE;
// Insert PHP code from XMLDB Editor here
return$result;
}
?>
為獲得“/ /insert PHP code here“代碼(即實現資料庫表操作的php代碼,編輯器會提供),開啟XML編輯器、載入相關install.xml檔案,並編輯該檔案。
選擇“查看PHP”選項,
然後選擇動作“add field“(添加欄位),然後複製並粘貼產生的程式碼。
比如上述添加flag欄位,操作的php代碼為下方灰色框中內容,將代碼複製到upgrade.php中,而flag欄位是要在外掛程式升級過程中添加,需要調整外掛程式的版本號碼(version.php檔案中),要大於舊版本號碼,同時將代碼中XXXXXXXXXX替換為新版本號碼(建議),以避免未知的錯誤。
比如舊版本號碼為2016022400,那麼新的版本號碼可以為2016022401,比舊版本大即可。
在升級過程中,會驗證外掛程式表中是否已存在該欄位,即:
if(!$dbman->field_exists($table, $field)) {
$dbman->add_field($table,$field);
}
註:XMLDB編輯器只是將資料庫表結構以xml格式儲存,不會更改資料庫。而upgrade.php中內容才是實際實現資料庫操作的,完成資料庫的增刪改查等。而相應的php代碼可以通過XMLDB編輯器提供。可以參考上述建立欄位操作。
此時,由於外掛程式版本號碼沒有變化,升級過程不會執行,需要將外掛程式版本號碼上調版本號碼,這樣系統才會檢測到外掛程式需要升級。
例如:version.php中版本為2015110604,那麼需要增加(多少無所謂),變為2015110605,同時將upgrade.php檔案中的版本號碼要與修改後的相同。
- 使用
l XMLDB編輯器比較容易使用。強烈推薦實際操作一段時間,看它是如何工作以及如何修改install.xml檔案。
l 這是一個自上而下的組織圖,從載入(或建立)一個新XMLDB檔案開始。可以編輯該檔案,並且檔案基本結構會顯示處理。結構中有兩種類型的元素:表和語句,並且XMLDB編輯器允許添加、編輯、刪除、移動。
l 在編輯表時,你可以看到和輕鬆地處理表的欄位、關鍵字和索引。請注意,某些欄位是不可編輯的,因為它們可能是作為鍵或索引的一部分在使用。
l 欄位可以編輯,指定它們的名稱、類型、長度、小數、空、預設等。鍵和索引與之相同。
l 所有的XMLDB編輯器頁面允許您對輸入有關項目的修改進行注釋(表、索引、關鍵領域,聲明)。使用它,你希望,它可以協助其他開發人員瞭解一點的資料庫模型。
l 如果要定義一個枚舉類型的欄位,應該提供一個逗號分隔的列表,每個選項由單引號包圍。例如:“選項”,‘option2 ‘,‘option3”。然而,枚舉已在Moodle 2過時,所以要盡量避免。
- 公約(參考)
除了資料庫結構的指南,應該遵循一些更為規範的規則:
3.1關於名稱:
a) 所有小寫名稱(表、索引、鍵和欄位)。
b) 表名和欄位名必須只使用A-Z、0-9和_字元。最大28個字元。
c) XMLDB檔案中的鍵和索引名,必須用“-”(減號)字元串連欄位名來形成。
d) 主鍵必須被命名為“primary”。
e) 強烈建議避免保留名。
3.2關於空值
a) 避免使用預設值“”(Null 字元串)來建立所有的欄位。
3.3關於外鍵
a) 每個XML檔案的表之下,你必須定義現有外鍵(FK)正確。這將允許每個人都知道一個更好的結構,允許發展到一個更好的約束系統,在未來,將提供必要的資訊,以建立適當的指標的基礎代碼。
b) 注意,如果你定義任何欄位組合為FK你不會建立任何索引欄位,代碼會自動地做它!
c) 尊重公約3.1-c)
3.4關於唯一鍵
a) 宣布任何領域唯一鍵(UK),如果他們打算作為一個FK(外鍵)的目標。建立獨特的索引。
b) 尊重公約3.1-c)
- 參閱
l XMDB定義一個XML結構
l 安裝和升級外掛程式資料庫表
l 利用Moodle使用XMLDB編輯器論壇討論
l 附錄B - 從介紹Moodle編程課程的XML編輯器
Moodle外掛程式開發系列——XMLDB編輯器