註冊時新增學號Idnumber
阿新 • • 發佈:2019-02-15
學號,在國內的用處非常的大,就像身份證一樣,使用者的唯一標識。但在國外,學號卻是非常隱私的,註冊時既不是必填項,選填項都談不上,只有在使用者編輯個人資料時,在可選項中有學號的選項,與網頁、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欄位。