6

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

我将如何设置映射?

4

2 回答 2

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 ),然后按保存按钮。

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

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

创建每个应用程序的映射:

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

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

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

然后,此映射将仅适用于该应用程序,允许您为不同的应用程序将相同的映射点指向不同的位置。

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

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

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

使用映射引用组件:

这些中的任何一个都将使您能够执行以下操作:

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

或者:

MyObj = new components.NameOfFile()

(请注意,您不会/component/nameoffile像使用映射时那样使用。)

没有映射的全局组件:

如果您想在没有映射的情况下全局访问组件,请转到“组件”部分(就在菜单中的“映射”下方),然后在“其他资源”部分中输入您的绝对组件路径。(不要勾选受信任

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

MyObj = new NameOfFile()
于 2012-08-22T13:07:15.727 回答
3

您应该在Application.cfc. 查看这些相关问题

railo application.cfc this.mappings 不工作

如何从外部属性文件将映射包含到 Application.cfc 中?

于 2012-08-22T13:05:06.653 回答