为什么我的coldfusion cfc不能访问application.cfm中包含的udf?

时间:2009-07-21 20:39:04

标签: logging coldfusion scope cfc application.cfm

我有一个日志功能(不能使用cflog)包含在application.cfm中,我的.cfm页面可以访问它,但我使用的任何组件都给我一个“变量LOGGER未定义”。错误。

application.cfm

<cfinclude template="logging.cfm">

logging.cfm

<cffunction name="logger" >
 ...
</cffunction>

关于我做错了什么的想法?

1 个答案:

答案 0 :(得分:10)

因为组件的工作方式是组件无法在其自身之外看到“variables”范围,而当您<cfinclude> logging.cfm时,它将这些功能包含在页面的变量范围。为了让您的组件调用这些函数,您可以这样做:

<cfinclude template="logging.cfm">

<cfset request.logger = variables.logger>

然后在<cfcomponent>中,您可以拨打request.logger(whatever)

但老实说,这让我觉得倒退了。相反,为什么不是包含名为“log”的函数的Logger.cfc,然后当你想记录某些东西时,你只需这样做:

<cfinvoke component="my.Logger" method="log" message="#mylogmessage#">