我正在穆迪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在您的小胡子文件中可用,但只要页面中包含该.js文件,如果将其放在其他.js文件中,它仍会执行完全相同的操作。
要注意的一件事:如果使用我上面定义的函数,则该变量将没有ID。取而代之的是,它的名称等于您输入的VARIABLE_NAME的名称。但是,这意味着您不能使用document.getElementByID()
来获取变量的实例。相反,您将必须使用document.getElementsByName("VARIABLE_NAME")[0]
来访问您的元素。
如果这两个步骤都完成,您将看到值更新,并在$ data变量中提交后发送到您的表单。