-1

我是modx的新手,我必须在我的网站上创建多页 测验。任何建议都会有所帮助。

4

1 回答 1

0

虽然实现此目的的方法不止一种,但FormItFormItRetriever附加功能的组合可能正是您所需要的。FormIt 处理您的测验表单,其中包括将数据保存在缓存中或数据库中作为 JSON 对象。而且,顾名思义,FormItRetriever 允许您在后续页面上检索以前保存的表单数据。

这是一个改编自 FormIt 文档的快速示例:

第 1 页

[[!FormIt?
 &submitVar=`go`
 &hooks=`spam,redirect`
 &store=`1`
 &redirectTo=`id-of-next-page`
]]
<form action="[[~[[*id]]]]" method="post">
    <input type="hidden" name="nospam" value="" />
    <label for="qzq1">Quiz question 1: [[!+fi.error.qzq1]]</label>
    <input type="text" name="qzq1:required" id="qzq1" value="[[!+fi.qzq1]]" />
    <label for="qzq2">Quiz question 2: [[!+fi.error.qzq2]]</label>
    <input type="text" name="qzq2:required" id="qzq2" value="[[!+fi.qzq2]]" />
    <label for="qzq3">Quiz question 3: [[!+fi.error.qzq3]]</label>
    <textarea name="qzq3:stripTags" id="qzq3" cols="55" rows="7">[[!+fi.qzq3]]</textarea>
    <br />
    <input type="submit" name="go" value="Next" />
</form>

&store属性告诉 FormIt将数据存储在缓存中,以便使用 FormItRetriever 片段进行检索。

&redirectTo属性是您的下一页的 ID 。FormIt 将使用&hooks属性中指定的重定向钩子在用户提交此表单时重定向用户。

第2页:

[[!FormItRetriever]]

[[!FormIt?
 &submitVar=`go`
 &hooks=`spam,redirect`
 &store=`1`
 &redirectTo=`id-of-third-page`
]]

/* Page 2 quiz form goes here */

FormItRetriever 片段将允许您使用与表单字段名称相关的占位符来显示以前保存的表单数据 => [!+fi.qzq1]]

要将测验表单数据存储在数据库中,您可以使用FormItSaveForm。这允许您稍后查看自定义管理器页面 (CMP) 中的数据并在需要时将其导出。

更多使用示例参考官方文档:https ://docs.modx.com/extras/revo/formit

于 2018-06-20T04:38:52.693 回答