Почему мой 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#">
Другие вопросы по тегам