簡體   English   中英

如何在moodle PHP中為select元素做if語句

[英]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 中沒有這種機制,所以基本上只有兩種選擇:

  1. 編寫 js\\amd 模塊,它將跟蹤下拉“更改”事件,檢查所選選項並相應地調整第二個下拉選項

  2. 執行相同的場景,但涉及 ajax:事件跟蹤器將使用“發布”下拉選項發送 ajax 請求並接收來自服務器的響應。

另一種選擇是使用“hierselect”表單元素,它允許您顯示 2 個選擇菜單,其中第一個菜單中的選擇動態更改第二個菜單中的選項。 我在 Moodle 論壇(這里)上問了一個關於它的問題,其中顯示了一個示例用法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM