我在webroot的子目录中有一个application.cfc:
/app/application.cfc
我最近在其子目录中添加了另一个application.cfc,它使用此处描述的代理方法http://corfield.org/blog/index.cfm/do/blog.entry/entry/Extending_Your_Root_Applicationcfc扩展了原始application.cfc:
/app/mysubdir/application.cfc
/app/applicationproxy.cfc
subdir cfc的extends属性如下所示:
<cfcomponent extends="app.applicationProxy">
这一切都运行良好到目前为止,但这里有更多背景:我已经通过将它放在/ app called / appstaging旁边的目录中来暂存我的应用程序。这样可以正常工作,即没有冲突,因为我使用了所有相对路径,而我的更高级别的application.cfc确定了它所在的dir,设置了一个变量(例如application.appdir),代码可以用它来构建相对路径如果需要的话。
这是我的问题:现在我有了新的/app/mysubdir/application.cfc,如果这是staging目录树,我需要扩展的路径才能真正成为“appstaging.applicationProxy”。尽管ColdFusion坚持认为“extends”的值是不变的。它不会让我弄清楚我在哪里,并把它放在正确的名字上,就像我在其他地方一直在做的那样。
有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
如果您使用的是CF8,请在application.cfc中使用新的this.mappings结构。看起来大致如此。我会让你写下代码来判断你是在/ app还是/ appstaging:
如果(inAppStaging) this.mappings [“/ app”] = expandPath(“/ appstaging”); //或其他......只需获取应用程序目录的完整路径
这样,当这个application.cfc在/ app下运行时,它就会像往常一样工作。当它在appstaging中运行时,它会告诉coldfusion对于这个应用程序,“app”指向“appstaging”。