【发布时间】:2012-12-23 00:17:09
【问题描述】:
有谁知道是否可以在冷融合模板中调用融合动作?
【问题讨论】:
标签: coldfusion fusebox
有谁知道是否可以在冷融合模板中调用融合动作?
【问题讨论】:
标签: coldfusion fusebox
(您尚未指定哪个 Fusebox 版本;此答案适用于 Fusebox 5.x)
您的标题和问题是在问两个不同的问题 - 熔断器和熔断器是两个不同的东西。 fuse 只是一个 CFML 模板,而 fuseaction 表示执行特定操作(类似于函数)的一组逻辑。
要调用熔断器,只需像往常一样包含文件 - 这不需要特殊的 FB 功能。
要调用融合动作,请使用 do 动词,如下所示:
<cfset myFusebox.do('circuit.fuseaction') />
要存储结果,请使用 content 变量的第二个参数:
<cfset myFusebox.do('circuit.fuseaction',varname) />
这是这个 XML 的等价物:
<do action="circuit.fuseaction" contentvariable="varname" />
还有其他可用的参数,请参阅this Fusebox cheat sheet,其中也包含许多其他有用的信息。
【讨论】:
使用 MVC,您应该通过单个入口点工作。因此,在您的请求期间应该只调用一个 fuseaction。
但是 fuseaction 可以根据需要调用其他一些模型和视图模板。而且我相信 Fusebox 允许您将该逻辑重构为可以被多个操作使用的东西。 (虽然我对我的 Fusebox 功能有点生疏,但我敢打赌一些谷歌搜索会引导你前进。)
作为最后的手段,您可以使用 <cfhttp> 在您的应用程序中调用一个 URL,以调用该 fuseaction。但是,为什么不直接运行一些代码,而不需要通过另一个 HTTP 调用给您的服务器带来负担呢?
【讨论】:
before_filter 和 CFWheels 中的 filters()。)