【问题标题】:How to do if statement for select element in moodle PHP如何在moodle PHP中为select元素执行if语句
【发布时间】:2018-09-14 21:30:35
【问题描述】:

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

【问题讨论】:

    标签: php arrays forms moodle


    【解决方案1】:

    很遗憾目前mform中没有这个机制,所以基本上只有两种选择:

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

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

    【讨论】:

      【解决方案2】:

      另一个选项可能是使用“hierselect”表单元素,它允许您显示 2 个选择菜单,其中第一个菜单中的选择会动态更改第二个菜单中的选项。我在 Moodle 论坛 (here) 上提出了一个问题,其中显示了一个示例用法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-14
        • 2011-10-19
        • 1970-01-01
        • 2019-08-08
        相关资源
        最近更新 更多