Почему мой Coldfusion CFC не может получить доступ к udf, включенному в application.cfm? - PullRequest
1 голос
/ 22 июля 2009

У меня есть функция регистрации (я не могу использовать cflog), включенная в application.cfm, и мои страницы .cfm могут получить к ней доступ, но любые компоненты, которые я использую, дают мне «Переменная LOGGER не определена». ошибка.

application.cfm

<cfinclude template="logging.cfm">

logging.cfm

<cffunction name="logger" >
 ...
</cffunction>

Есть идеи, что я делаю не так?

1 Ответ

10 голосов
/ 22 июля 2009

потому что компоненты работают так, что компонент не может видеть область действия "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#">
...