ColdFusion对象方法中的变量名

时间:2011-10-28 18:00:10

标签: coldfusion

我正试图在一个cffunction中设置一个变量。

结果如下:

<cfset local.layouts.appLayout = '../../app/layouts' & local.appController.new()>

以上代码有效。在local.layouts.appLayout结构中,它在appControler中指定新方法的返回值。这就是我需要做的事情。

我的问题是我需要动态分配该语句的方法部分。我有另一个变量coreRoute.action在该函数中等于“new”但我似乎无法使语法正确。

我试过这个:

<cfset local.layouts.appLayout = '../../app/layouts' & local.appController.coreRoute.action()>

这不起作用,我明白为什么。我也试过这个:

<cfset local.layouts.appLayout = '../../app/layouts' & local.appController & #coreRoute.action# & '()'>

我尝试了很多这种语法的变体,但我无法做到这一点。

任何人都对如何做到这一点有任何想法。我被卡住了。

提前感谢您的帮助。

更新:在Todd Sharp的帮助下,我最终使用了这个并且效果很好:

<cfinvoke component="#local.appController#" method="#coreRoute.action#" returnvariable="local.act">

            <cfset local.layouts.appLayout = '../../app/layouts' & local.act>

2 个答案:

答案 0 :(得分:7)

您应该考虑使用<cfinvoke>进行动态方法调用。尝试谷歌搜索“coldfusion动态方法调用” - 这是最好的结果之一:

http://www.bennadel.com/blog/1320-ColdFusion-CFInvoke-Eliminates-The-Need-For-Evaluate-When-Dynamically-Executing-User-Defined-Functions.htm

答案 1 :(得分:2)

此外,如果你想完全用脚本完成,你可以使用这种方法:

dynFn = this["foo" & bar];
dynFn(stuff);

这是在cfc中,如果您是从cfc外部进行的,或者根本不使用cfc,只需将“this”更改为您的方法所在的位置。