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

bla*_*ank 1 coldfusion logging scope cfc application.cfm

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

application.cfm

<cfinclude template="logging.cfm">
Run Code Online (Sandbox Code Playgroud)

logging.cfm

<cffunction name="logger" >
 ...
</cffunction>
Run Code Online (Sandbox Code Playgroud)

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

mar*_*her 10

因为这样的部件的工作是一个组件无法看到" variables"范围的本身之外,当你<cfinclude>你的logging.cfm,它包括那些功能到页面的变量范围.为了让您的组件调用这些函数,您可以这样做:

<cfinclude template="logging.cfm">

<cfset request.logger = variables.logger>
Run Code Online (Sandbox Code Playgroud)

然后在你的<cfcomponent>,你可以打电话request.logger(whatever).

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

<cfinvoke component="my.Logger" method="log" message="#mylogmessage#">
Run Code Online (Sandbox Code Playgroud)