gpt4 book ai didi

web-applications - Heist:如何将子模板的动态列表插入到模板中?

转载 作者:行者123 更新时间:2023-12-03 23:38:26 25 4
gpt4 key购买 nike

我正在写一个在线调查网站。我有一个问题列表,所有问题都在一个 html 页面上,并且列表的长度未知。每个问题都有存储在模板 qu1.tpl 中的表格页面是qu.tpl .现在我想:

  • 替换 qu1.tpl 中的一些名称每个问题
  • 替换qu.tpl中的一些东西一次
  • 并粘贴 qu1.tpl 的所有实例化进入 qu.tpl

  • 使用我在教程中学到的知识,我尝试递归替换标签 <qulist/><apply template="qu1.tpl"><qulist/>qu.tpl使用 localHeistbindString但这行不通,因为 qu.tpl已呈现,因此新插入的应用标签无法解析。

    我应该怎么做?

    (我想这是一个更普遍的问题。如果您能想到答案适用的其他应用程序,请为搜索引擎添加文本和标签。)

    最佳答案

    在 Heist 中,当你做一些涉及动态数据计算的事情时,你通常会使用拼接。您的前两点可以通过绑定(bind)拼接处理。对于第三点,我将首先创建一个呈现特定问题模板的拼接函数。它看起来像这样:

    questionSplice :: Monad m => Int -> Splice m
    questionSplice n = do
    splices <- setupSplicesForThisQuestion
    mTemplate <- callTemplate (B.pack ("qu"++(show n))) splices
    return $ fromMaybe [] mTemplate

    现在您可以为调查问题列表创建一个拼接:
    surveyQuestions :: Monad m => Splice m
    surveyQuestions = do
    questions <- getSurveyQuestions
    mapSplices questionSplice questions

    然后,您可以将此拼接绑定(bind)到特定标签并在 qu.tpl 或任何其他模板中的任何位置使用它。

    这里重要的部分是 callTemplate 函数。这是 Heist 的函数,用于从 TemplateMonad 计算中渲染模板。我认为教程中没有太多讨论它,因为它不是人们通常关心的用例,而且很容易在 API 文档中遗漏。

    关于web-applications - Heist:如何将子模板的动态列表插入到模板中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6788131/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com