Mura 中的 CF 应用程序范围可变吗?

CF application scope mutable in Mura?

首先,感谢您花时间阅读并回答这个问题。另外,我是CF的相对菜鸟。

我有一个 .cfm 文件,当用户填写网络表单时会调用该文件(即表单操作使用 POST 方法指向它)。该 .cfm 然后 POST 以另一种形式发送到数据跟踪端点,并继续到下一个面向用户的视图。

我 运行 在这个 Mura 项目中 运行 遇到的问题是,应用程序范围没有按照我期望的方式工作它到。例如,我这样设置应用程序变量:

<cfif isDefined(form.campaign) AND len(form.campaign) >
        <cfset application.campaign = form.campaign />
    <cfelse>
        <cfset application.campaign = 'default' />
</cfif>
<cfif isDefined(form.channel) AND len(form.channel)>
        <cfset application.channel = form.channel />
    <cfelse>
        <cfset application.channel = form.channel/>
</cfif>

如果 cfdump 在这种情况下会根据我传递的内容得出预期值。但是,一旦我转到下一个视图(使用 cflocation)和 cfdump 应用程序范围,这两个键将不可用。

我的印象是应用程序范围应该或多或少地在会话中持续存在?

TLDR:确保在您的应用程序中的任何地方只有一个 Application.cfX 实例。

一位团队成员在比 Application.cfc 更高级别的目录中创建了一个名为 application.cfm 的文件,该文件优先于正确的文件并破坏了很多东西。

添加它是为了尝试向用于业务 logic/form 处理的 .cfm 文件发出 HTTP 请求。这允许这样做,但产生了许多其他问题。

从目录中删除了该文件,将表单处理逻辑移至 /remote(Mura 支持 HTTP 请求)并重构了一些代码;应用程序和会话范围再次在整个应用程序中可用,就像 Mura($) 范围一样。