1

我正在使用 Leaf Tau,但我认为在“标准”Leaf 中问题是相似的(只是其他一些关键字)。

到目前为止,我的页面是以我称之为“自下而上”的方式创建的。我渲染了最具体的部分,然后使用#inline 逐步完成

例如。在我的 list.leaf 中,我有:

#define(body):
//my html 
#enddefine
#inline("main/subMenus")

然后我有我的子菜单文件

#define(subMenus):
//some html 
#evaluate(body)
#enddefine
#inline("main/mainMenu")

然后我可能有 mainMenu 文件

#define(mainMenu):
//some html 
#evaluate(subMenus)
#enddefine
#inline("main/index")

最重要的是我的索引文件。然后,在我的控制器中,我将渲染 list.leaf 文件,其中包含 #define(body) 。

到目前为止,该项目中大约 40 个不同的页面(列表和记录页面)都可以完美运行,但是现在需要在正文级别上完全不同的东西。我在一页中需要几个不同的正文。

让我澄清一下:用户可以在应用程序中选择创建不同类型的操作。一些动作有 2 个字段和一个图像,其他有 12 个字段,其他 5 个字段 3 个图像,......所以它们将完全不同的渲染。每个动作都有一个名称:例如:促销、邀请、...

用户可以有许多不同的动作,所以对于我的叶子模板,我将传递一组动作,然后我想渲染这些动作。所以在伪代码中,我的正文文件看起来像:

#define(body)
  #for(action in actions):
    #evaluate(action.name)
  #endfor
#enddefine
#inline("main/subMenus")

然而有几个问题:

  • 我可以在顶部的正文文件中定义每个动作,而是将它们放在单独的文件中。因此,在程序中添加一个动作意味着,在叶模板级别,添加 1 个包含定义和 html 的文件。我不知道如何做到这一点
  • #evaluate(action.name) 不起作用,看来我不能使用变量,但需要使用硬编码的静态名称

有人可以帮助我如何正确制定或更好地解决这个问题

4

0 回答 0