【发布时间】:2019-10-18 11:36:17
【问题描述】:
我想使用名称中的变量来调用自定义标签。像这样
<cfset slist = 'product_categories'>
<cf_cu_show_#slist#>
这让我在 # 上出现错误。当我以传统方式调用它时,自定义标签 cu_show_product_categories 存在并且正在工作。 这个想法是建立一个列表来循环,调用几个自定义标签。
<cfset slist = 'product_categories'>
<cfif a = 'blogs'>
<cfset slist = listAppend(slist,"blogs")>
</cfif>
<cfif b = 'posts'>
<cfset s_list = listAppend(slist,"last_posts")>
</cfif>
<cfloop list="#slist#" index="i">
<cf_cu_show_#i#>
</cfloop>
我试图用谷歌搜索,但找不到任何有用的东西。任何帮助,将不胜感激。
【问题讨论】:
-
为了使用变量名调用自定义标签,您必须改用
<cfmodule>语法来调用它。虽然<cf_cu_show_#slist#>无效(如您所见),但您可以使用<cfmodule template="cu_show_#slist#.cfm">来调用它以实现您的目标。 -
您的整体方法似乎相当费力。与其拥有多个自定义标签,不如拥有一个可以接受各种输入参数的标签,这似乎是一种用更少代码完成工作的方法。
-
@Dan Bracuk,感谢您的建议。我给出的示例是一段非常简化的代码。现实情况是 9 个环境使用自定义标签,每个环境都有不同的条件,也有不同的显示顺序。出于可读性目的,我选择了这种方法,因此我们在不同的自定义标签中拥有这些部分,并且不需要使用大量变量来调用它。此外,我发现很难构建 1 个自定义标签,我需要在其中确定以特定顺序排列的部分。
标签: coldfusion cfml