1. 程式人生 > >註冊時新增學號Idnumber

註冊時新增學號Idnumber

學號,在國內的用處非常的大,就像身份證一樣,使用者的唯一標識。但在國外,學號卻是非常隱私的,註冊時既不是必填項,選填項都談不上,只有在使用者編輯個人資料時,在可選項中有學號的選項,與網頁、ICQ號碼、Skype號碼、機構、系別、電話等在一起,顯得可有可無。在國內,我們就非常的不適應,因為學號是唯一的,本人一直在思考這個問題,主要是想新增學號欄位,並能在名單、作業、成績等列表中能實現按學號排序的功能。

隨著時間的推移,Moodle慢慢 走向國際化,學號慢慢也突顯起來,不僅在使用者列表、課程成員列表佔有一席之地,在成績列表也有學號的一欄。所有,Moodle蒐集學號也非常有必要了。

學號,既不需要新增使用者自定義欄位,因為,Moodle本身就帶有,學號——idnumber,早就存在於mdl_user表裡,一直閒置。

如何拿到學號,最最直接的方式,就是註冊、且必填。

經過翻越程式碼,做如下修改即可:

moodle\login\signup_form.php

新增如下程式碼:

$mform->addElement('text', 'idnumber', get_string('idnumber'), 'maxlength="255" size="25"');
$mform->setType('idnumber', core_user::get_property_type('idnumber'));
$mform->addRule('idnumber', get_string('required'), 'required', null, 'client');
$mform->setForceLtr('idnumber');

遺憾的時,idnumber為必填項了,不能提示“學號沒填”,僅顯示“必須的”,關鍵是沒有解決

$mform->addRule('idnumber', get_string('required'), 'required', null, 'client');

get_string('missingidnumber');不能正確解析,嘗試過修改moodle\lang\en\moodle.php,新增$string['missinglastname'] = 'Missing surname';然並卵,只能用“required”。

備註:

//You have couple of options:

//Use server side rules and check them in php code (implement method validation in form class).
$mform->addRule('fieldname', get_string('required'), 'required');

//Use client side rules but do not force them
$mform->addRule('fieldname', get_string('required'), 'required', '', 'client', false, false);

雖然這個問題解決了,但這個辦法卻不是一勞永逸的,每次Moodle一升級,就得改程式碼。

另外一個折中辦法,就是直接匯入註冊使用者,excel表中加入idnumber欄位。