首页 > 解决方案 > 如何在moodle PHP中为select元素执行if语句

问题描述

嘿伙计们,所以我目前正在 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 的初学者,所以任何事情都会有所帮助:)

标签: phparraysformsmoodle

解决方案


不幸的是,目前在 mform 中没有这种机制,所以基本上只有两种选择:

  1. 编写 js\amd 模块,该模块将跟踪下拉“更改”事件,检查所选选项并相应调整第二个下拉选项

  2. 执行相同的场景但涉及 ajax:事件跟踪器将发送 ajax 请求并使用“发布”下拉选项从服务器接收响应。


推荐阅读