Почему мой Coldfusion CFC не может получить доступ к udf, включенному в application.cfm?
У меня есть функция ведения журнала (я не могу использовать cflog), включенная в application.cfm, и мои страницы.cfm могут получить к ней доступ, но любые компоненты, которые я использую, дают мне "Переменная LOGGER не определена". ошибка.
application.cfm
<cfinclude template="logging.cfm">
logging.cfm
<cffunction name="logger" >
...
</cffunction>
Есть идеи, что я делаю не так?
1 ответ
Потому что компоненты работают так, что компонент не может видеть "variables
"сфера вне себя, и когда вы <cfinclude>
ваш logging.cfm
он включает эти функции в область видимости переменной. чтобы ваш компонент вызывал эти функции, вы можете сделать это:
<cfinclude template="logging.cfm">
<cfset request.logger = variables.logger>
а затем в вашем <cfcomponent>
Вы могли бы позвонить request.logger(whatever)
,
Но, честно говоря, мне это кажется отсталым. Вместо этого, почему бы не Logger.cfc
которая содержит функцию с именем "log", а затем, когда вы хотите что-то записать, вы просто делаете:
<cfinvoke component="my.Logger" method="log" message="#mylogmessage#">