0

我第一次尝试使用映射,但遇到了一些问题。在我的 CFadmin 中,我创建了一个如下所示的映射:

逻辑路径:

/email_sender

目录路径:

E:\sites\Example.Com\cf_modules\autoresponders\Emails\emailLists

我正在尝试从 .cfc 访问包含文件。在我的 cfc 中,我有一个包含文件,它位于同一个文件夹中,它工作得很好,但是该包含文件绑定到根据我传递的信息访问另一个包含文件。

组件内的包含文件中包含此代码。

<cfmail from="#emailData.sender#" to="#surveymain.email#" subject="#subject#"  type="HTML" >
    <cfinclude template="#emailData.includePath#" >
</cfmail>    

为了更清楚,这是我的整个文件系统:

access.cfm -> some.cfc -> include_1(有效)-> include_2(路径问题)

我有一个 try/catch,它通过电子邮件将错误发​​送给我,它位于 include_1 中。

如何使用我创建的映射最终能够访问我的包含文件?

请注意,在emailLists我拥有动态文件夹之后,这些文件夹会根据我尝试向哪个客户端发送电子邮件而改变。所以路径的最终结果是:

E:\sites\Example.Com\cf_modules\autoresponders\Emails\emailLists\client_A\email_template.cfm

我尝试通过这样做来使用我的映射 <cfinclude template="/email_sender/#emailData.includePath#" >

这给了我这个错误:

CFC 的路径必须指定为完整路径或当前模板的相对路径,而不使用映射。

此外,我尝试在 cfinclude 中包含完整路径,这也导致了以下错误:

注意:如果您希望在 CFINCLUDE 中使用绝对模板路径(例如,>template="/mypath/index.cfm"),则必须使用 ColdFusion 管理器为该路径创建映射。或者,您可以使用每个应用程序设置来指定特定于该应用程序的映射,方法是在 Application.cfc 中指定映射结构到 THIS.mappings。
使用相对路径(例如,template="index.cfm" 或 template="../index.cfm")不需要创建任何特殊映射。因此,建议您尽可能使用 CFINCLUDE 的相对路径。

任何帮助/建议将不胜感激

编辑:重新启动服务器后,工作的版本是这个: <cfinclude template="/email_sender/#emailData.includePath#" >

感谢那些回答的人。

4

2 回答 2

3

一些问题,而不是一些答案。

  1. 您是否在 CFAdmin 或 Application.cfc 中设置了映射?
  2. 如果你运行下面的代码,你会得到什么?

    #expandPath("/email_sender")#

  3. 的价值是#emailData.includePath#多少?

  4. 这有什么价值:#expandPath("/email_sender#emailData.includePath#")#
  5. 您能否向我们提供错误消息的确切文本,而不是模糊地描述它们。
  6. 的价值是#fileExists(expandPath("/email_sender#emailData.includePath#"))#多少?

如果您可以使用该信息更新您的问题,您将发现哪里出错了,或者我们可以帮助找出故事的内容

于 2012-10-25T18:14:03.827 回答
0

类似的事情曾经发生在我身上。本质上,我们编辑了 xml 文件,而不是使用管理界面。直到我们的系统管理员重新启动服务器,我们才意识到为什么没有进行映射。那么,自从您添加映射后,您是否重新启动了服务器?

于 2012-10-25T18:29:26.330 回答