我正在使用 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) 不起作用,看来我不能使用变量,但需要使用硬编码的静态名称
有人可以帮助我如何正确制定或更好地解决这个问题