【问题标题】:Getting data back from a mustache template Moodle 3.7从胡须模板 Moodle 3.7 中获取数据
【发布时间】:2019-11-12 20:40:06
【问题描述】:

我正在 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)
);

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

【问题讨论】:

    标签: javascript php templates moodle mustache


    【解决方案1】:

    您想要访问的任何变量都必须使用以下函数在 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。

    【讨论】:

      猜你喜欢
      • 2023-02-17
      • 2021-12-28
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 2015-11-24
      • 1970-01-01
      • 2011-10-14
      相关资源
      最近更新 更多