您可以在应用程序根目录下的子目录下运行保险丝盒5+。它可能不是最明显的做法。
不幸的是,你不能创建一个动态映射来扩展Application.cfc,因为你的Application.cfc还没有被实例化 - 你会得到一个鸡与蛋的情景。你不能创建到Fusebox的映射,因为你的Application.cfc没有启动,你不能启动你的Application.cfc,因为它找不到它应该扩展的组件。
这是COLDFUSION 8. BUG的ColdFusion应该寻找映射顺序:
从CF管理员
- 子目录
- 映射的文件夹断当前目录
- 子目录断网名为
它在您使用CreateObject()时执行此操作,但在cfcomponent上使用Extends属性时不执行此操作。
最简单的解决方案是像使用任何应用程序一样使用Application.cfc,然后在index.cfm中包含保险丝盒。你的文件夹结构是这样的:
/myapp/fusebox5/
/myapp/index.cfm
-- consists of <cfinclude template="fusebox5/fusebox5.cfm" />
你index.cfm文件会因为你不拦截具有的Application.cfc的OnRequest请求不能只要忽略,或者如果你使用OnRequest,请确保您有预期的目标(无论如何,它几乎总是index.cfm)。
如果你不想要index.cfm做include,你可以让你的Application.cfc的OnRequest方法做cfinclude。
<cffunction name="onRequest">
<cfinclude template="fusebox5/fusebox5.cfm">
</cffunction>
您可能仍然需要一个index.cfm让你的Web服务器不会给一个目录列表或404,但如果该文件是空的它的确定。
该映射将起作用,但是如果您试图扩展该映射中的组件(fusebox5.Application),它将会中断。在找到扩展组件之前,您无法创建Application.cfc的实例,但在找到扩展组件之后才能找到扩展组件。失败。 – 2009-05-21 19:00:30