我正在四处奔波,并认为将我的应用程序变量移动到可以加载到应用程序启动的表中会很好。
我的目的是让ANT推出应用程序,并更改数据库中的一些设置和众所周知的预设..
在我的测试代码中,application.cfc有一个简单的查询来调用所有的变量名,然后是一个cfloop来将应用程序范围内的每个变量设置为application.varname。
在ApplicationStart上没有报告错误..但是尝试引用变量会给出未定义的类型错误。
我的蜘蛛感觉告诉我这是一个小而明显的东西......任何想法?
谢谢!
更新1:我正在看的是设置动态变量名称以及它们是应用程序变量的事实似乎没有太大影响..
http://www.bennadel.com/blog/152-Dynamic-ColdFusion-Variables-Via-Quoted-Naming.htm
答案 0 :(得分:6)
作为一个兴趣点,我不知道作者是在提倡这种语法还是仅仅证明它是有效的。
就个人而言,我更喜欢数组符号。我认为这有助于促进良好的范围生活习惯。
<!--- array notation --->
<cfset scope["staticName"& dynamicPortion] = "some value">
<!--- example 1 --->
<cfset variables["baseName"& x] = "oh brother">
<!--- example 2 --->
<cfset variables["baseName#x#"] = "oh brother">
答案 1 :(得分:4)
我的问题的答案是通过引用名称来设置动态变量名称。
<!--- Loop over the girls and alter the values. --->
<cfloop index="intGirl" from="1" to="3">
<!--- Randomly pick 1 (true) or 0 (false). --->
<cfif RandRange( 0, 1 )>
<!--- Set the dynamic variable naming used quoted evaluation. --->
<cfset "Girl#intGirl#" = "super sexy" />
</cfif>
</cfloop>
更多信息......
http://www.bennadel.com/blog/152-Dynamic-ColdFusion-Variables-Via-Quoted-Naming.htm
答案 2 :(得分:3)
使用cfloop + cfset而不是cfoutput
答案 3 :(得分:2)
如果我正确地阅读了您的问题,您是说您在cfoutput标记内设置了应用程序变量?
您使用的是cfoutput吗
<cfoutput query="queryName">
<!--- Setting code in here --->
</cfoutput>
您应该使用cfloop而不是cfoutput
<cfloop query="queryName">
<cfset application.varName = queryName.varName />
</cfloop>
虽然没有一些代码,但很难提供帮助。
我的问题是:如果您只是将应用程序变量转储回应用程序范围,为什么要将应用程序变量存储在数据库中?