如何在 moodle PHP 中为 select 元素做 if 语句
How to do if statement for select element in moodle PHP
大家好,我目前正在 PHP 中构建一个基于 Moodle 的项目,我只是好奇如何能够删除 [=43] 数组中的某些 select 选项=] 选项。我正在考虑使用 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
的选择是 "I like to party" 和 "I don't like to party"
如果我选择 "I like to party" 那么我只会得到 $CHOICE_PUBLISH
的一个子集
但是如果我选择 "I don't like to party" 那么我会得到 $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模块,跟踪下拉"change"事件,检查选中的选项并相应地调整第二个下拉选项
执行相同的场景,但涉及 ajax:事件跟踪器将发送 ajax 请求并使用 "publish" 下拉选项从服务器接收响应。
另一种选择是使用 'hierselect' 表单元素,它允许您显示 2 个 select 菜单,其中第一个菜单中的 selection 会动态更改第二个菜单中的选项第二个菜单。我在 Moodle 论坛 (here) 上问了一个关于它的问题,它显示了一个示例用法。
大家好,我目前正在 PHP 中构建一个基于 Moodle 的项目,我只是好奇如何能够删除 [=43] 数组中的某些 select 选项=] 选项。我正在考虑使用 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
的选择是 "I like to party" 和 "I don't like to party"
如果我选择 "I like to party" 那么我只会得到 $CHOICE_PUBLISH
但是如果我选择 "I don't like to party" 那么我会得到 $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模块,跟踪下拉"change"事件,检查选中的选项并相应地调整第二个下拉选项
执行相同的场景,但涉及 ajax:事件跟踪器将发送 ajax 请求并使用 "publish" 下拉选项从服务器接收响应。
另一种选择是使用 'hierselect' 表单元素,它允许您显示 2 个 select 菜单,其中第一个菜单中的 selection 会动态更改第二个菜单中的选项第二个菜单。我在 Moodle 论坛 (here) 上问了一个关于它的问题,它显示了一个示例用法。