【问题标题】:Fusebox invoking a fuse within the codeFusebox 在代码中调用保险丝
【发布时间】:2012-12-23 00:17:09
【问题描述】:

有谁知道是否可以在冷融合模板中调用融合动作?

【问题讨论】:

    标签: coldfusion fusebox


    【解决方案1】:

    (您尚未指定哪个 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,其中也包含许多其他有用的信息。

    【讨论】:

    • Fuseactions 是我一直在寻找的,我会试试你的解决方案。谢谢,我会告诉你的。
    【解决方案2】:

    使用 MVC,您应该通过单个入口点工作。因此,在您的请求期间应该只调用一个 fuseaction。

    但是 fuseaction 可以根据需要调用其他一些模型和视图模板。而且我相信 Fusebox 允许您将该逻辑重构为可以被多个操作使用的东西。 (虽然我对我的 Fusebox 功能有点生疏,但我敢打赌一些谷歌搜索会引导你前进。)

    作为最后的手段,您可以使用 &lt;cfhttp&gt; 在您的应用程序中调用一个 URL,以调用该 fuseaction。但是,为什么不直接运行一些代码,而不需要通过另一个 HTTP 调用给您的服务器带来负担呢?

    【讨论】:

    • “所以在你的请求过程中只应该调用一个 fuseaction。” - 不。将有一个入口点,但将请求划分为进一步的子熔断操作是完全有效的(并且鼓励)。甚至可以设置 prefuseaction 和 postfuseactions。
    • “而且我相信 Fusebox 允许您将该逻辑重构为可以被多个操作使用的东西。” 我想描述这一点的正确方法是使用“预感。”我认为 prefuseactions 是运行重构控制器逻辑的一种更具表现力的方式,并且符合更现代的开发实践。 (想想 Rails 中的 before_filter 和 CFWheels 中的 filters()。)
    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 2016-06-08
    • 2014-03-08
    • 2019-08-25
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多