Вызывает ли 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.

Другие вопросы по тегам