我正在使用一些我们既无法控制又无法查看来源的供应商代码。
为了便于解释,我假设我有三个文件。
Test.cfm
VendorModule.cfm
Custom.cfm
在Test.cfm中:我正在调用cfmodule:
<CFMODULE template="VendorModule.cfm">
我对供应商模块一无所知;不是它执行的代码或它调用的其他模块等,除了它会在某个时候调用我的文件:Custom.cfm
在Custom.cfm中:是否有一些逻辑和打印是或否(显然变量“某些东西”在我省略的代码中定义)
<cfif something is true>
<cfoutput>Yes</cfoutput>
<cfelse>
<cfoutput>No</cfoutput>
</cfif>
当我运行Test.cfm时,我会在页面上按预期获得“是”或“否”输出。
我想要做的是让Custom.cfm设置一个变量,然后由Test.cfm读取。
所以Custom.cfm看起来像:
<cfif something is true>
<cfset ??? = "Yes">
<cfelse>
<cfset ??? = "No">
</cfif>
Test.cfm看起来像:
<CFMODULE template="VendorModule.cfm">
<!--- Do something here based on value of ??? set in Custom.cfm --->
这可以做到我可以得到的东西吗?
谢谢!
答案 0 :(得分:2)
这绝对不是一个理想的情况,但鉴于您无法看到vendormodule.cfm
代码,更不用说更改它了,您的选择是有限的。
如果vendormodule.cfm
在custom.cfm
或cfinclude
中调用了您的cfmodule
,您可以修改此后的范围,甚至建议它,但它应该完成你所追求的目标。
<cfif something is true>
<cfset caller.caller.result = "Yes">
<cfelse>
<cfset caller.caller.result = "No">
</cfif>
上述代码必须根据调用custom.cfm
级别进行修改。例如,如果custom.cfm
深度为六级,那么它会引用variables
范围内的test.cfm
范围,如下所示:
caller.caller.caller.caller.caller.caller.result
您唯一的其他选择是修改custom.cfm
test.cfm
可以看到的{{1}}内的其他共享范围。
希望有所帮助。
答案 1 :(得分:0)
通常,cfmodule会使用Caller
范围返回值,该范围是cfmodule的调用方,即Test.cfm
。因此,可能在调用cfmodule之前和之后,转储Variables
范围,并查看cfmodule是否设置了任何其他变量。
某些cfmodule也可能会返回其他范围内的变量,例如: Request
范围。因此,如果您未在Variables
范围内看到任何新设置,请尝试所有其他范围。