[英]How to do if statement for select element in moodle PHP
嘿伙計們,我目前正在用 PHP 構建一個基於 Moodle 的項目,我很好奇如何能夠為選擇選項刪除數組中的某些選擇選項。 我正在考慮使用 disabledIf 函數,但我想不出任何用例。 例如,這是我的代碼:
$mform->addElement('select', 'showresults', get_string("publish", "choice"), $CHOICE_SHOWRESULTS);
$mform->addElement('select', 'publish', get_string("privacy", "choice"), $CHOICE_PUBLISH);
//$mform->disabledIf('publish', 'showresults', 'eq', 0);
$CHOICE_SHOWRESULTS
和$CHOICE_PUBLISH
都是數組。
例如,假設$CHOICE_SHOWRESULTS
的選擇是“我喜歡聚會”和“我不喜歡聚會”
如果我選擇“我喜歡聚會”,那么我只會得到$CHOICE_PUBLISH
一個子集
但是如果我選擇“我不喜歡聚會”,那么我會得到$CHOICE_PUBLISH
所有元素
在此處的moodle文檔中https://docs.moodle.org/dev/Form_API
我只看到 disableIf 實際上就像一個 if 語句,但它並沒有真正說明是否選擇了數組中的某個元素然后顯示一些結果。
所以我想在代碼中這樣的東西:
$mform->addElement('select', 'showresults', get_string("publish", "choice"), $CHOICE_SHOWRESULTS);
if ( one choice within $CHOICE_SHOWRESULTS)
$mform->addElement('select', 'publish', get_string("privacy", "choice"), SUBSET OF $CHOICE_PUBLISH);
else { //another choice of CHOICE_SHOWRESULTS
$mform->addElement('select', 'publish', get_string("privacy", "choice"), $CHOICE_PUBLISH);
}
我是 Moodle 的初學者,所以任何事情都會有所幫助:)
不幸的是,目前 mform 中沒有這種機制,所以基本上只有兩種選擇:
編寫 js\\amd 模塊,它將跟蹤下拉“更改”事件,檢查所選選項並相應地調整第二個下拉選項
執行相同的場景,但涉及 ajax:事件跟蹤器將使用“發布”下拉選項發送 ajax 請求並接收來自服務器的響應。
另一種選擇是使用“hierselect”表單元素,它允許您顯示 2 個選擇菜單,其中第一個菜單中的選擇動態更改第二個菜單中的選項。 我在 Moodle 論壇(這里)上問了一個關於它的問題,其中顯示了一個示例用法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.