从小胡子模板 Moodle 3.7 取回数据

Getting data back from a mustache template Moodle 3.7

我正在 moodle 3.7 中为新的管理工具插件做一些开发。在这个插件中,我从一个定制的 .mustache 模板生成一个页面。该模板包含许多在其中定义和管理的值,我想在按下提交按钮后在我的 .php 文件中访问这些值。

但是目前我无法访问这些在模板中定义的已提交值。我可以在 $form->_form->_submitValues 下调试时看到它们的值,但由于 _form 是 $form 的受保护变量,我无法访问它们。我调用了 $form->get_data(),但这只让我可以访问我在 php 中定义为非 html 元素(例如隐藏)的元素,而不是在模板中.我不确定在这里问这个问题是否合适,但如果有人有任何帮助,他们可以给我前进的道路,我将不胜感激。

我正在使用函数将模板添加到页面:

$mform->addElement(
    'html', 
    $OUTPUT->render_from_template(PLUGIN_TOOL_NAME/members', $rendercontext)
);

请让我知道您可能需要的任何其他信息。

您想要访问的任何变量都必须使用这些函数在 mform 中定义:

$mform->addElement('hidden', 'VARIABLE_NAME');
$mform->setType('VARIABLE_NAME', PARAM_INT);

任何需要更新这些值的 JavaScript 都必须在单独的 .js 文件中,而不是在您的模板中。如果 JavaScript 在您的 mustache 文件中有效,那么如果您将它放在不同的 .js 文件中,它仍然会执行完全相同的操作,只要该 .js 文件包含在页面中即可。

有一点要注意:如果你使用我上面定义的函数,变量将没有ID。相反,它的名称将等于您输入的 VARIABLE_NAME。但是,这意味着您不能使用 document.getElementByID() 来获取变量的实例。相反,您将不得不使用 document.getElementsByName("VARIABLE_NAME")[0] 来访问您的元素。

如果这两件事都完成了,那么您应该会看到值更新并在 $data 变量中提交时发送到您的 mform。