我有在的Application.cfc设置映射麻烦我们有diverent服务器(DEV,QS,PROD)各少许不同Pathes。 我想通过配置文件来设置服务器而pathes和变量。 在ApplicationStart你读的ini文件和设置您的系统。 http://www.raymondcamden.com/index.cfm/2005/8/26/ColdFusion-101-Config-Files-AGoGo这工作得很好。
Normaly你Applcation.cfc设置映射是这样的:
<!--- in Application.cfc --->
<cfset this.mappings['/components'] = "D:\Inetpub\wwwroot\myApp\components">
某处在一个正常的CFM文件我通过instatiate一个CFC名为test:
<cfset t = createObject("component", "components.test")>
我想设置的映射唯一一次onApplicationsStart
<cffunction
name="OnApplicationStart"
access="public"
returntype="boolean"
output="false"
hint="Fires when the application is first created.">
<!---create structure to hold configuration settings--->
<cfset ini = structNew()>
<cfset ini.iniFile = expandPath("./ApplicationProperties.ini")>
<cfset application.ini = ini>
<!--- read ini file --->
<cfset sections = getProfileSections(application.ini.iniFile)>
<cfloop index="key" list="#sections.mappings#">
<cfset this.mappings[key] = getProfileString(application.ini.iniFile, "mappings", key)>
</cfloop>
但是,这并不工作,因为this.mappings是空的,下一个请求。 :(
把这个给OnRequestStart
<!--- read ini file --->
<cfset sections = getProfileSections(application.ini.iniFile)>
<cfloop index="key" list="#sections.mappings#">
<cfset this.mappings[key] = getProfileString(application.ini.iniFile, "mappings", key)>
</cfloop>
我得到的组件不能被发现的错误。 这很奇怪。
把结构到应用范围
<cfloop index="key" list="#sections.mappings#">
<cfset APPLICATION.mappings[key] = getProfileString(application.ini.iniFile, "mappings", key)>
</cfloop>
如何调用我的组件?
<cfset t = createObject("component", "application.components.test")>
不工作。
因此,我有3个目标。
- 阅读从ini文件所有pathes和映射
- 在ApplicationStart阅读他们一次
- 使用方便的源代码。