Railo中的组件映射

Ele*_*ist 6 coldfusion cfc railo

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

我该如何设置映射?

Pet*_*ton 9

摘要...

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

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

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

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

创建每个上下文映射:

转到Railo Admin(即http://domain/railo-context/admin/web.cfm),在菜单中超过一半,您将找到"Archives&Resources",其中包含"Mappings".

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

您还可以使用带有"updateMapping"操作的cfadmin标记以编程方式创建每个上下文映射.

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

创建每个应用程序映射:

要仅为特定应用程序创建映射,可以在Application.cfc中执行此操作

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

This.Mappings = { '/components' : '/home/user/public_html/components' }
Run Code Online (Sandbox Code Playgroud)

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

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

<cfset MappingStruct = { '/components' : '/home/user/public_html/components' } />
<cfapplication mappings=#MappingStruct# />
Run Code Online (Sandbox Code Playgroud)

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

引用具有映射的组件:

这些中的任何一个都可以使您:

MyObj = createObject('component','components.NameOfFile').init()
Run Code Online (Sandbox Code Playgroud)

要么:

MyObj = new components.NameOfFile()
Run Code Online (Sandbox Code Playgroud)

(请注意,/component/nameoffile在使用映射时,您不会像使用它一样使用.)

没有映射的全局组件:

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

然后你可以简单地创建你的对象而不components.需要映射:

MyObj = new NameOfFile()
Run Code Online (Sandbox Code Playgroud)