有没有一种方法可以在标记中指定组件路径?
我正在为我的应用程序使用ColdFusion组件。我的应用程序有几个文件夹,但是,每次我要使用CFC时,都必须将其保存在与那些需要访问的文件相同的目录中。这导致我创建了几个相同的CFC文件。
有没有一种方法可以将我的CFC存储在一个目录中,并使其在我的站点中正常工作?
最佳答案
正如其他人指出的那样,您可以使用定位应用程序根目录的映射和函数来做一些有趣的事情,但问题的核心是通用路径规范。
我建议您阅读Using ColdFusion Components文档中名为的部分,指定CFC位置。
本质上,它的意思是,如果您的应用程序位于http://example.com/myApp/上,并且您在http://example.com/myApp/foo/bar/fubar.cfm上有一个页面想要在以下位置使用该组件:
/myApp/foo/components/library/fubar.cfc
然后fubar.cfm应该执行以下操作:
<cfset fubar=createObject("component", "myApp.foo.components.library.fubar") />
您采用文件的路径,并用点(也称为“点符号”)替换斜杠,并从要加载的组件的文件名中删除“.cfc”。
另外,您可以使用命名映射(如Aaron所述),因此,如果创建一个名为
/components
的映射,该映射指向/myApp/foo/components/
,则createObject调用将如下所示:<cfset fubar = createObject("component", "components.library.fubar") />
可以在
<cfinvoke />
中使用相同的点符号路径,作为component
属性的一部分:<cfinvoke component="components.library.fubar" ... />
关于coldfusion - 如何将CFC存储在单独的目录中并使它们工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2379717/