在我的根application.cfc
中,我定义了this.customTagPaths
。验证它适用于所有页面,包括子文件夹中的页面。在一个子文件夹中,我有一个application.cfc
,它扩展了这个根application.cfc。此文件夹中的页面仍然使用正确的自定义标记,因此我们知道这是正常的。
但是,当尝试在[subfolder]/application.cfc
文件中使用自定义标记时,我相信它会从不同的自定义标记路径中提取。我在自定义标记中添加了一些调试信息,并在从普通页面调用自定义标记时输出,但在从application.cfc
调用时不输出。我无权访问服务器以将调试信息放在其他自定义标记路径中以确保。
application.cfc
中的代码是否忽略this.customTagPaths
,如果是,我如何使用我需要的特定代码?此自定义标记在调用者范围内设置变量,因此无法使用简单的cfInclude
调用它。
修改
我将尝试在这里的评论中解决一些问题。
相关的自定义标记已简化为此代码:
<cfset Caller.groupList = "">
<cfquery name="getGroups">
SELECT id, name
FROM groups
WHERE id = 1
</cfquery>
<cfoutput query="getGroups">
<cfset Caller.groupList = #ListAppend(Caller.groupList, name)#>
</cfoutput>
<cfoutput>Caller.groupList: #Caller.groupList#<br></cfoutput>
Application.cfc正在使用此代码:
<cfcomponent extends="RootApplication">
............
<cf_groupList>
<cfoutput>request.groupList: #request.groupList#<br><br></cfoutput>
</cfcomponent>
当直接从cfm调用cf_groupList时,它会将“Call.groupList:xxxx”写入页面并显示dev数据库中的正确值。但是,当Application.cfc运行时,自定义标记“Call.groupList:xxxx”永远不会出现,但“request.groupList:xxxx”会出现,而在后一种情况下,它会显示我们期望从实时数据库中获得的列表。 live和dev站点当前都在同一台服务器上,我们正在更改它,但是现在我没有调试信息。
我从Application.cfc调用自定义标记的原因是因为此标记用于许多其他地方。简单地将代码复制并粘贴到Application.cfc中可以解决问题,但是我们遇到了一个重复代码问题,我们需要记住将来在两个地方进行更新。在application.cfc中使用自定义标记而不是复制代码似乎是正确的方法。
马克,你是对的。放置在父Application.cfc中时,自定义标记可以正常工作。在孩子身上没有。