coldfusion - 在 CF 中,我可以使用变量作为名称来调用自定义标签吗?
问题描述
我想使用名称中的变量来调用自定义标签。像这样
<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>
语法调用自定义标记。在您的第一个场景中,您会这样称呼它。
<cfset slist = 'product_categories'>
<cfmodule template="cu_show_#slist#.cfm">
在下面的示例中,您将这样修改您的代码。
<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">
<cfmodule template="cu_show_#i#.cfm">
</cfloop>
这是有关如何使用的文档链接<cfmodule>
。
https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-tags/tags-mo/cfmodule.html
我还找到了另一个不错的链接,他们在其中演示了您需要动态提供标签名称的场景,如https://flylib.com/books/en/2.375.1.420/1/所示
推荐阅读
- java - 如何使用登录名/密码在 Java 中连接到 IBM Cognos BI?
- node.js - 节点 Postgres COPY FROM 静默失败
- sql - Excel VBA SQL ADODB 未将行插入工作表(无错误)
- indexing - 多次使用包含相同数字的集合
- python - 如何定义一个函数来根据多个条件汇总和选择数据?
- spring - 保护 Spring (4.2.8.RELEASE) Http Remote 方法导致错误创建 bean/找不到匹配的工厂方法:工厂 bean
- r - 如何在 R 中的数据点标签中创建下标?
- java - thymeleaf 中字符串的参数
- expression - 如何在后期效果中使视频剪辑“闪烁”
- react-native - 尽管存在 Podfile,AppCenter 似乎没有运行 pod install