【问题标题】:Coldfusion CreateObject from different directory来自不同目录的 Coldfusion CreateObject
【发布时间】:2015-09-16 21:51:35
【问题描述】:

我的目录结构:

  1. Com.Lib.db(所有 db cfcs)

  2. Com.Lib.search(所有搜索 cfcs)

  3. Com.Lib.utils(所有 utils cfcs)

如果我从 webroot 目录创建 (db) 目录的普通对象。

例子:

Createobject("component", "Com.Lib.db.mycfcA");

如果我在 (db) 目录中创建对象

示例: Createobject("component", "mycfcA");

这是正常情况。就我而言,我想创建一个从 db 目录到 Utils OR Search 的对象。例如,当我尝试给出完整路径时: 如果我在 db 目录中,尝试在 (Utils) 目录中创建 myUtils.cfc 的对象。

Createobject("component", "Com.Lib.Utils. myUtils");

【问题讨论】:

  • 您可能需要映射。在您的Application.cfc 中类似于
  • 组件路径 Com.Lib... 是相对于您的应用程序的根路径 (/)。如果物理路径与您的应用程序不在同一目录中,则需要映射。
  • 感谢您的快速回复,但仍然无法正常工作
  • Application.cfc

标签: coldfusion cfml cfc


【解决方案1】:

为了说明组件的相对路径查找,这里举个例子:

您的网络应用程序是这样的:

/wwwroot/your-app/Application.cfc
/wwwroot/your-app/index.cfm
/wwwroot/your-app/images/example.jpg

您有一个虚拟主机 (www.your-app.com) 指向:

/wwwroot/your-app/

这是你的根。 ColdFusion 会将/ 物理解析为/wwwroot/your-app/(默认根映射)。

调用类似的组件:

createObject("component", "Com.Lib.Utils.myUtils")

现在将检查文件是否存在,即初始化组件:

/wwwroot/your-app/Com/Lib/Utils/myUtils.cfc

如果您的 CFC 不在此结构中,您需要为它们定义自定义映射。 自定义映射在 Application.cfc 的构造函数中定义。 因此,假设您的 CFC 位于以下目录中:

/wwwroot/my-cfcs/Com/Lib/Utils/

现在您将为它们创建一个映射,例如:

<!--- Application.cfc --->
<cfcomponent>

    <cfset THIS.mappings["utils"] = "/wwwroot/my-cfcs/Com/Lib/Utils/">

</cfcomponent>

要调用组件,您现在可以参考映射的组件路径,例如:

createObject("component", "utils.myUtils")

这将检查文件是否存在,即初始化组件:

/wwwroot/my-cfcs/Com/Lib/Utils/myUtils.cfc

【讨论】:

  • 我认为没有人能比这个详细的解决方案更好。我不知道为什么它不起作用。我正在使用 [fedora -- Lucee 4.5.1.022] 我不知道为什么它不起作用。你认为这可能是因为 lucee 或 fedora 吗???
  • Application.cfc Test.cfm
  • Ohhhhh...现在工作我发现了我在“onstartapplication”中定义映射的问题...只是逐行查看代码......
猜你喜欢
  • 1970-01-01
  • 2013-11-08
  • 2014-11-30
  • 1970-01-01
  • 2018-06-18
  • 2014-05-05
  • 2011-07-25
  • 2012-02-18
  • 1970-01-01
相关资源
最近更新 更多