Fusebox не анализирует XML-файлы
В настоящее время в application.cfc я расширяю Fusebox 5.5 Framework. Затем в методе OnRequestStart ниже я установил режим fusebox в зависимости от определенного условия.
Проблема в том, что иногда файлы fusebox xml не обрабатываются независимо от того, какие изменения я делаю. Если я форсирую повторный анализ, используя переменные url fusebox.parse=true&fusebox.loadclean=true&fusebox.password=xxx, тогда файлы снова анализируются.
Это похоже на то, как Fusebox остается в рабочем режиме, хотя когда я выкидываю файл FUSEBOX_PARAMETERS.mode, он говорит "разработка-полная загрузка"
Что может быть причиной этого? Является ли способ, которым режим fusebox управляется правильно, в приведенном ниже коде или такие настройки должны быть выполнены где-то еще (кроме fusebox.xml, очевидно)??
Любая помощь будет отличной. Спасибо
<cffunction name="onRequestStart">
<cfset variables.server_type = "Development" />
<cfswitch expression="#variables.server_type#">
<cfcase value="development">
<cfset FUSEBOX_PARAMETERS.mode = "development-circuit-load" />
<cfset FUSEBOX_PARAMETERS.debug = true />
<cfset request.component_reload = true />
</cfcase>
<cfdefaultcase>
<cfset FUSEBOX_PARAMETERS.mode = "production" />
<cfset FUSEBOX_PARAMETERS.debug = false />
<cfset request.component_reload = false />
</cfdefaultcase>
</cfswitch>
<cfif (StructKeyExists(attributes, "fusebox.loadapp") AND attributes.fusebox.password EQ application.fusebox.password) OR FUSEBOX_PARAMETERS.mode NEQ application.fusebox.mode>
<cfset this.onApplicationStart() />
</cfif>
<cfset superReturn = super.onRequestStart(arguments.1) />
</cffunction>
1 ответ
Увидеть, FUSEBOX_PARAMETERS
хранятся в application
область действия, по умолчанию они включены в огромный контейнер application.fusebox
, Настройки Fusebox заполняются, когда super.onApplicationStart()
вызывается, так что изменяя их в onRequestStart
не имеет смысла.
Я бы порекомендовал перенести код cfswitch в тело компонента, где вы определяете настройки приложения.
В onRequestStart
Вы можете принудительно перезапустить приложение, чтобы перечитать настройки, возможно, что-то вроде этого:
<cfif StructKeyExists(attributes, "fusebox.loadapp") AND attributes["fusebox.password"] EQ application.fusebox.password>
<cfset this.onApplicationStart() /
</cfif>
Обратите внимание, что fusebox.loadapp
не является встроенным атрибутом Fusebox, он будет работать только для вашего приложения, просто для удобства добавляется префикс, как и другие. Таким образом, вы можете перечитать синглтоны вашего приложения.