Railo中的组件映射

时间:2012-08-22 12:58:19

标签: coldfusion cfc railo

我想把我所有的CFC放到/ components文件夹中,并且能够从应用程序的不同位置调用它们,例如。来自/forums/index.cfm。

我如何设置映射?

2 个答案:

答案 0 :(得分:9)

概要...

有多种方法可以设置映射,实际上有两种不同类型的映射:

  • 传统的映射是通过管理员创建的,可以在CFML代码中的任何位置使用。 Railo支持此类型的每个上下文和每个服务器的映射。

  • 还有一个每应用程序映射,可以在Application.cfc中创建,也可以通过cfapplication标记创建,可以在大多数位置使用,但是是运行时构造,所以不能在编译时使用。

此外,如果您有全局组件,您可能希望避免使用映射,只需告诉Railo组件的位置,以便您可以直接访问它们。

创建每个上下文映射:

转到Railo管理员(即http://domain/railo-context/admin/web.cfm),在菜单中超过一半的位置,您会找到“Archives& Resources”,其中包含“Mappings”。

在Virtual列中输入/components,在Resource列中输入该目录的绝对路径(例如/ home / user / public_html / components),然后按保存按钮。

您还可以使用带有“updateMapping”操作的cfadmin tag以编程方式创建每个上下文映射。

(这里的所有内容也适用于每服务器映射,除了使用服务器管理员而不是Web管理员。每个服务器映射在Web Admin界面中是可见的但是只读。)

创建每个应用程序映射:

要仅为特定应用程序创建映射,可以在Application.cfc

中执行此操作

只需创建一个名为this.mappings的变量,其中包含虚拟和资源值的结构,例如:

This.Mappings = { '/components' : '/home/user/public_html/components' }

此映射只适用于该应用程序,允许您为不同的应用程序使用相同的映射点到不同的位置。

Railo还允许在Application.cfm中使用cfapplication标记创建每个应用程序映射 - 如下所示:

<cfset MappingStruct = { '/components' : '/home/user/public_html/components' } />
<cfapplication mappings=#MappingStruct# />

注意:应用程序级映射有一些限制,因为它们存在于运行时,但不存在于编译时(因此,例如,它们不能用于自定义标记库,其中在编译模板时评估taglib属性。

引用具有映射的组件:

其中任何一个都可以让你做到:

MyObj = createObject('component','components.NameOfFile').init()

或者:

MyObj = new components.NameOfFile()

(请注意,除非使用映射,否则不要使用/component/nameoffile。)

没有映射的全局组件:

如果要在不使用映射的情况下全局访问组件,请转到“组件”部分(位于菜单中的“映射”下方),然后在“其他资源”部分中输入绝对组件路径。 (保留Trusted unticked 。)

然后,您只需创建对象而无需components.映射:

MyObj = new NameOfFile()

答案 1 :(得分:3)