php - 如何在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 的初学者,所以任何事情都会有所帮助:)
解决方案
不幸的是,目前在 mform 中没有这种机制,所以基本上只有两种选择:
编写 js\amd 模块,该模块将跟踪下拉“更改”事件,检查所选选项并相应调整第二个下拉选项
执行相同的场景但涉及 ajax:事件跟踪器将发送 ajax 请求并使用“发布”下拉选项从服务器接收响应。
推荐阅读
- java - 生成器是抽象的;无法实例化。为什么?
- python-packaging - 管理 python 依赖项以安装其他包
- javascript - Javascript Promise - 拒绝或解析数据库中的空结果
- c# - 如何使自定义按钮响应更流畅?
- angular - 在 Angular 中,是否可以在模板内部创建一个复制对象?
- amazon-web-services - docker with AWS:在 docker 容器内的哪个目录是寻找 AWS 凭证的?
- c++ - 存储 gsl::span 的 std::vector
没有按预期工作 - flutter - 如何在 Flutter 中动态生成小部件?
- android - 如何让android模拟器连接到我们服务器上的特定端口
- botframework - 有没有办法在机器人框架中垂直堆叠建议的操作?