Perchè non può la mia ColdFusion accesso cfc un'UDF inclusi in Application.cfm?
-
18-09-2019 - |
Domanda
Ho un funzione di registrazione (non può usare cflog) incluso nel Application.cfm e le mie pagine .cfm posso accedere a questa, ma tutti i componenti che uso mi dia un "taglialegna variabile non è definito." di errore.
application.cfm
<cfinclude template="logging.cfm">
logging.cfm
<cffunction name="logger" >
...
</cffunction>
Tutte le idee su quello che sto facendo di sbagliato?
Soluzione
perché il lavoro dei componenti modo è che un componente non può vedere il campo di applicazione "variables
" al di fuori di se stesso, e quando si <cfinclude>
vostro logging.cfm
, è compreso quelle funzioni in ambito variabile della pagina. in modo che il componente di chiamare queste funzioni, si potrebbe fare questo:
<cfinclude template="logging.cfm">
<cfset request.logger = variables.logger>
e poi nel vostro <cfcomponent>
, si potrebbe chiamare request.logger(whatever)
.
Ma, onestamente, questo si sente indietro per me. Invece, perché non un Logger.cfc
che contiene una funzione denominata "log", e poi quando si desidera registrare qualcosa, basta fare:
<cfinvoke component="my.Logger" method="log" message="#mylogmessage#">