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?

È stato utile?

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#">
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top