Вызывает ли cflocation onRequest?
Я получаю сообщение об ошибке "transaction_types" не определено и не понимаю, почему.
У меня есть application.cfc:
<cffunction name="onRequest" >
<cfargument name="targetPage" type="String" required=true/>
<cfinclude template="header.cfm">
</cffunction>
Файл header.cfm выглядит так (заголовок вызывается для каждого файла, и в зависимости от каталога, в котором находится пользователь, есть разные подзаголовки):
<cfinclude template="#GetDirectoryFromPath(Arguments.targetPage)#subheader.cfm" />
В каталоге, с которым у меня возникла проблема, есть два файла: index.cfm и subheader.cfm.
subheader.cfm, первая строка
<cfset transaction_types = ["a", "b", "c"] />
часть index.cfm, и я думаю, что проблема может быть в cflocation, но я не уверен:
<cfif structKeyExists(url, "something") >
-- some database work is done here --
<cflocation url="index.cfm">
</cfif>
--further down on this page, transaction_types is used
Я установил страницу, думая, что типы_ транзакций будут определены каждый раз при загрузке каталога / index.cfm, поскольку файл приложения всегда загружает header.cfm, а затем каталог / subheader.cfm перед каталогом / index.cfm. Обходит ли это cflocation?
1 ответ
Вы включаете код в OnRequest, который устанавливает переменные в variables
область Application.cfc, а затем пытается ссылаться в шаблоне позже.
Область переменных cfc в целом, включая Application.cfc в частности, хотя и в особом случае, не распространяется на шаблоны, которые вызываются как часть запроса.
Если вам нужно установить transaction_types
во время Application.cfc OnRequest, во включенных шаблонах или нет, и ссылка в index.cfm позже, тогда это должно быть сделано в области, например request
а затем упоминается позже как таковая.
subheader.cfm
<cfset request.transaction_types = ["a", "b", "c"] />
Тогда назовите request.transaction_types
в коде index.cfm.