coldfusion - 在子目录中扩展 application.cfc

标签 coldfusion cfc application.cfc

我有以下两个文件,并希望第二个扩展第一个:

  • wwwroot\site\application.cfc
  • wwwroot\site\dir\application.cfc

  • 但是,当我为第二个文件声明组件时,我不确定在 extends 属性中放什么。 我的问题是几个开发站点(具有共享的 SVN 存储库)正在运行相同的 ColdFusion 实例 ,所以我不能像这样在 CF 管理中创建一个映射:
    <cfcomponent extends="site.application">
    

    但是,ColdFusion 不喜欢:
    <cfcomponent extends="..application">
    

    或任何动态输入,如:
    <cfcomponent extends="#expandpath('..').#application">
    

    创建运行时映射( like here )似乎也不可能。在基本 application.cfc 中创建它是无用的,因为在声明继承 cfc 时该代码尚未执行;并且我无法在定义继承组件之前创建映射,因为还没有应用程序可以将其附加到。

    有什么办法可以引用父目录来完成我的扩展吗?

    编辑以澄清:由于上面的粗体文本,ApplicationProxy 解决方案不起作用。现在,作为一种解决方法,我们只是不将\dir\application.cfc 检入 SVN,以便每个开发人员都可以保留一个扩展他/她自己的根 application.cfc 的版本。显然,这并不理想。

    最佳答案

    以下代码对我有用。我注意到的一件事是 application.cfc 似乎被缓存了,所以对父应用程序 cfc 的更改可能不会反射(reflect)。我通过对子应用程序 cfc 进行微不足道的更改来解决这个问题。

    <cfcomponent output="false">
            <cfset variables.higherPath = ReReplace(GetMetaData(this).name,"\.[^\.]+\.[^\.]+$","") />
            <cfset variables.extendApp = CreateObject("component", "#variables.higherPath#.Application") />
    
            <cfloop item="variables.key" collection="#variables.extendApp#">
                <cfif IsCustomFunction(variables.extendApp[variables.key])>
                    <cfset super[variables.key] = variables.extendApp[variables.key]>
                <cfelse>
                    <cfset this[variables.key] = variables.extendApp[variables.key] >
                </cfif>
            </cfloop>
            <cffunction name="onApplicationStart" output="false">
                <cfset super.onApplicationStart() />
            </cffunction>
    

    关于coldfusion - 在子目录中扩展 application.cfc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/307423/

    相关文章:

    regex - 精确字符串 coldfusion 正则表达式

    sql - 使用 Coldfusion 上传时存储文件名

    coldfusion - 设置邮件服务器参数时发生异常。 : cfpop

    coldfusion - 对使用 Java 对象实现其大部分功能的 cfc 进行单元测试的最佳方法是什么?

    redirect - 啊啊! Coldfusion 网站遭到黑客攻击

    coldfusion - 使用 header 和参数创建 chttp

    javascript - 通过 jQuery ajax 使用 Coldfusion 删除文件

    coldfusion - 是否可以使用 onCFCRequest 或类似函数将数据从 cfc 写入调用方请求范围?

    properties - 如何从外部属性文件将映射包含到Application.cfc中?

    Coldfusion Application.cfc & Application.cfm 在同一文件夹中