Вызывает ли cflocation onRequest? - PullRequest
0 голосов
/ 13 июля 2020

Я получаю сообщение об ошибке "transaction_types" is undefined, и не понимаю почему.

У меня есть application.cf c:

<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 Ответ

0 голосов
/ 15 июля 2020

Вы включаете код в OnRequest, который устанавливает переменные в variables области Application.cf c, а затем пытается ссылаться в шаблоне позже.

Область переменных cf c в general, включая Application.cf c, в частности, хотя и в частном случае, не распространяется на шаблоны, которые вызываются как часть запроса.

Если вам нужно установить transaction_types во время Application.cf c OnRequest, во включенных шаблонах или нет, и ссылка в index.cfm позже, тогда это должно быть выполнено в области видимости, такой как request, а затем ссылаться позже как таковая.

subheader.cfm

<cfset request.transaction_types = ["a", "b", "c"] />

Тогда используйте request.transaction_types в коде index.cfm.

...