3

自定义标签是否适用于映射?我试图不必将 CustomTags 文件夹作为相对地址。

我试过了:

<cfset this.mappings["/CT"] = Expandpath("/myProjects/Project1/CustomTags")>

在 Application.cfc 内部,然后

<cfimport prefix="tag" taglib="/CT">

在我的页面内,但它没有。

它说:

无法导入 /CT 指定的标签库。遇到以下错误:C:\Inetpub\wwwroot\CT。确保您已指定有效的标记库。

4

5 回答 5

2

与杰森报告的相反 - 我让 CFIMPORT 工作得很好,每个应用程序映射与 CFAdmin 中的全局设置相比。CFIMPORT 对映射非常古怪(例如,您不能将变量用于相对路径,也不能使用扩展路径) - 但您应该能够执行您所要求的操作,而不会出现问题。

您是否在 CFAdmin | 中选中了“启用每个应用程序设置”?设置是否允许您使用 this.mappings?你运行的是什么版本的CF?我在这段代码中使用 CF8 并且没有问题:

应用程序 CFC(在功能之外,但在组件中):

this.rootPath = getDirectoryFromPath(getCurrentTemplatePath());  // this assures path of application.cfc is used to determine path, likely equivalent to expandPath("/")
structInsert(this.mappings, '/vp', this.rootPath);

在 CFC 中(在函数之外,但在组件中):

<cfimport prefix="loader" taglib="/vp/view/_loader/">

然后我可以在 CFC 中使用它并按预期工作。

于 2009-07-30T18:24:01.157 回答
1

我很确定你不能用 cfimport 标签做任何花哨的事情。我认为您必须使用相对路径,并且必须在每个页面上手动包含它。(与将其放在 application.cfc 文件中的某处或其他地方)

于 2009-06-24T14:50:06.213 回答
1

文档说它适用于管理员 ColdFusion 映射页面中指定的目录。您是否尝试过在 ColdFusion 管理员中设置映射以查看是否首先有效?如果这样可行,但在 application.cfc 中为每个应用程序设置的 this.mappings 不起作用,那么可能是一个错误?!?

编辑: 我测试了亚当使用 expandPath() 函数的建议,但这也不起作用,因为 taglib 属性必须包含一个常量值。它不能包含变量或函数。除非您使用 ColdFusion Administrator 中的映射集,否则它根本不起作用。我使用这个 application.cfc 尝试了以下测试。

<cfcomponent>

    <cfset this.name = "TestApp" />
    <cfset this.loginStorage = "session" />
    <cfset this.sessionManagement = true />
    <cfset this.setClientCookies = true />
    <cfset this.setDomainCookies = false />
    <cfset this.sessionTimeOut = CreateTimeSpan(0,12,0,0) />
    <cfset this.applicationTimeOut = CreateTimeSpan(1,0,0,0) />
    <cfset this.mappings['/CT'] = "C:\apache\htdocs\myProjects\Project1\CustomTags"/>

</cfcomponent>

这在 ColdFusion 模板中:

<cfimport prefix="tag" taglib="#expandpath('/CT')#">

抛出错误:

这个表达式必须有一个常数值。

<cfset CT = expandpath('/CT')/>
<cfimport prefix="tag" taglib="#CT#">

抛出错误:

这个表达式必须有一个常数值。

于 2009-06-24T16:23:29.993 回答
1

我很确定expandPath尊重 CF 映射。你有没有尝试过这样的事情?

<cfset this.mappings["/CT"] = Expandpath("/myProjects/Project1/CustomTags")>

<cfimport prefix="tag" taglib="#expandPath('/CT')#">
于 2009-06-24T18:18:48.010 回答
1

我已经确认...您不能使用通过 application.cfc 中的“this.mappings”结构创建的映射。

来自 Adob​​e 的文档(Coldfusion 9):

该路径必须相对于 Web 根目录(并以 / 开头)、当前页面位置或管理员 ColdFusion 映射页面中指定的目录。

CF 9 的 CFImport 文档

不知道为什么 application.cfc 映射适用于除此之外的所有其他内容。有点令人失望,因为我喜欢在 Administrator 中尽可能少地定义的想法。我喜欢只是压缩一个应用程序并将其部署到任何地方。

于 2010-04-02T15:30:31.223 回答