Moodle外掛程式開發系列——XMLDB編輯器

來源:互聯網
上載者:User

標籤:

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(版塊)。

  1. 快速啟動

使用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檔案中的版本號碼要與修改後的相同。

 

  1. 使用

l  XMLDB編輯器比較容易使用。強烈推薦實際操作一段時間,看它是如何工作以及如何修改install.xml檔案。

l  這是一個自上而下的組織圖,從載入(或建立)一個新XMLDB檔案開始。可以編輯該檔案,並且檔案基本結構會顯示處理。結構中有兩種類型的元素:表和語句,並且XMLDB編輯器允許添加、編輯、刪除、移動。

l  在編輯表時,你可以看到和輕鬆地處理表的欄位、關鍵字和索引。請注意,某些欄位是不可編輯的,因為它們可能是作為鍵或索引的一部分在使用。

l  欄位可以編輯,指定它們的名稱、類型、長度、小數、空、預設等。鍵和索引與之相同。

l  所有的XMLDB編輯器頁面允許您對輸入有關項目的修改進行注釋(表、索引、關鍵領域,聲明)。使用它,你希望,它可以協助其他開發人員瞭解一點的資料庫模型。

l  如果要定義一個枚舉類型的欄位,應該提供一個逗號分隔的列表,每個選項由單引號包圍。例如:“選項”,‘option2 ‘,‘option3”。然而,枚舉已在Moodle 2過時,所以要盡量避免。

  1. 公約(參考)

除了資料庫結構的指南,應該遵循一些更為規範的規則:

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)

  1. 參閱

l  XMDB定義一個XML結構

l  安裝和升級外掛程式資料庫表

l  利用Moodle使用XMLDB編輯器論壇討論

l  附錄B - 從介紹Moodle編程課程的XML編輯器

Moodle外掛程式開發系列——XMLDB編輯器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.