我想将我所有的 CFC 放入 /components 文件夹,并能够从应用程序中的不同位置调用它们,例如。来自 /forums/index.cfm。
我将如何设置映射?
我想将我所有的 CFC 放入 /components 文件夹,并能够从应用程序中的不同位置调用它们,例如。来自 /forums/index.cfm。
我将如何设置映射?
有多种方法可以设置映射,实际上有两种不同类型的映射:
传统映射是通过管理员创建的,并且可以在您的 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()
您应该在Application.cfc
. 查看这些相关问题