Por que não pode o meu coldfusion cfc acesso a UDF incluído no Application.cfm?
-
18-09-2019 - |
Pergunta
Eu tenho uma função de registro (não pode usar cflog) incluído no Application.cfm e minhas páginas .cfm pode acessar esta, mas quaisquer componentes que eu uso me dar um "madeireiro Variável é indefinido." erro.
Application.cfm
<cfinclude template="logging.cfm">
logging.cfm
<cffunction name="logger" >
...
</cffunction>
Todas as ideias sobre o que estou fazendo de errado?
Solução
porque o Equipamento e componentes de trabalho é que um componente não pode ver o "variables
" fora do escopo de si mesmo, e quando você <cfinclude>
seu logging.cfm
, está incluindo essas funções em escopo de variáveis ??da página. para que seu componente para chamar essas funções, você pode fazer isso:
<cfinclude template="logging.cfm">
<cfset request.logger = variables.logger>
e, em seguida, em sua <cfcomponent>
, você poderia chamar request.logger(whatever)
.
Mas, honestamente, isso se sente para trás para mim. Em vez disso, por que não um Logger.cfc
que contém uma função chamada "log", e então quando você quiser registrar algo, você apenas fazer:
<cfinvoke component="my.Logger" method="log" message="#mylogmessage#">