0

我的 webroot 的子目录中有一个 application.cfc:

/app/application.cfc

我最近在其子目录中添加了另一个 application.cfc,它使用此处描述的代理方法扩展了原始 application.cfc http://corfield.org/blog/index.cfm/do/blog.entry/entry/Extending_Your_Root_Applicationcfc

/app/mysubdir/application.cfc
/app/applicationproxy.cfc

subdir cfc 的 extends 属性如下所示:

<cfcomponent extends="app.applicationProxy">

到目前为止,这一切都很好,但这里有更多背景信息:我一直在暂存我的应用程序,方法是将它放在 /app 旁边的一个名为 /appstaging 的目录中。这工作正常,即没有冲突,因为我使用所有相对路径,我的更高级别的 application.cfc 确定它在哪个目录中,设置一个变量(例如 application.appdir)并且代码可以使用它来构造相对路径如果它需要它。

这是我的问题:现在我有了新的 /app/mysubdir/application.cfc,如果这是暂存目录树,我需要扩展的路径实际上是“appstaging.applicationProxy”。ColdFusion 坚持认为“扩展”的值是恒定的。它不会让我弄清楚我在哪里并像我在其他任何地方所做的那样输入正确的目录名。

有没有办法解决这个问题?

4

1 回答 1

1

如果您使用的是 CF8,请在 application.cfc 中使用新的 this.mappings 结构。它看起来大概是这样的。我将由您自己编写代码来确定您是在 /app 还是 /appstaging 中:

if(inAppStaging) this.mappings["/app"] = expandPath("/appstaging");//或其他任何...只需获取您的appstaging目录的完整路径

这样,当这个 application.cfc 在 /app 下运行时,它会像往常一样工作。当它在appstaging 中运行时,它会告诉coldfusion 对于这个应用程序,“app”指向“appstaging”。

于 2009-11-05T00:28:26.123 回答