Javascript 从胡须模板Moodle 3.7获取数据

Javascript 从胡须模板Moodle 3.7获取数据,javascript,php,templates,moodle,mustache,Javascript,Php,Templates,Moodle,Mustache,我正在Moodle3.7中开发一个新的管理工具插件。在这个插件中,我从一个定制的.mustache模板生成一个页面。此模板包含许多在其中定义和管理的值,我希望在按下submit按钮后在.php文件中访问这些值 但是,目前我无法访问模板中定义的这些提交值。在调试中,我可以在$form->_form->_submitValues下看到它们的值,但我无法找到它们,因为_form是$form的受保护变量。我调用了$form->get_data(),但这只允许我访问在php中定义为非html元素(例如隐藏

我正在Moodle3.7中开发一个新的管理工具插件。在这个插件中,我从一个定制的.mustache模板生成一个页面。此模板包含许多在其中定义和管理的值,我希望在按下submit按钮后在.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在你的小胡子文件中工作,那么如果你把它放在另一个.js文件中,它仍然会做完全相同的事情,只要这个.js文件包含在页面中

需要注意的一点是:如果您使用我在上面定义的函数,那么变量将没有ID。相反,它的名称将等于您作为变量的名称。但是,这意味着您不能使用
document.getElementByID()
获取变量的实例。相反,您必须使用
document.getElementsByName(“变量名称”)[0]
才能访问您的元素

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