ColdFusion Application.cfm cfinclude not working

时间:2017-09-12 22:25:59

标签: coldfusion

我有一个名为“conv”的函数,在我的应用程序中的几个程序中需要它。因此,我将其放在Application.cfm中,而不是将其包含在每个程序中,如下所示:

<cfapplication name = "Moxware" sessionmanagement = "Yes">  
<cfset lang = "LU">
<cfset x127 = Chr(127)>   
<cfset mmox = 'Moxware'>
<cfinclude template="conv.cfc">

当我使用“conv”函数(在conv.cfc中)运行其中一个程序时,我收到错误,找不到函数conv

在我在互联网上寻找创意后,我尝试了这个:

<cfapplication name = "Moxware" sessionmanagement = "Yes">  
<cfset lang = "LU">
<cfset x127 = Chr(127)>   
<cfset mmox = 'Moxware'>
<cffunction name="onRequestStart" output="true" returntype="void">
   <cfinclude template="conv.cfc">
</cffunction>

这给了我与以前相同的错误信息。

有人可以向我解释如何做到这一点吗?

请注意,函数conv已经过测试,效果很好。

2 个答案:

答案 0 :(得分:3)

而不是像这样使用包...

<cfinclude template="conv.cfc">

尝试创建一个像这样的对象......

<cfscript>
 MyObject = createObject("component", "conv");
</cfscript>

如果要访问该对象中的某个功能,请尝试此操作...

<cfscript>
 SomeValue = MyObject.MyFunction();
</cfscript>

答案 1 :(得分:0)

您可以将CFM页面包含在CFC中,但我认为您不能将CFC代码包含在CFC中。

所以这是可能的......

<cffunction name="OnRequest" access="public" returntype="void" output="true" hint="Fires after pre page processing is complete.">

    <cfargument name="TargetPage" type="string" required="true" />

    <cfinclude template = "/myMapping/onRequestStart_include.cfm" />

    <cfinclude template = "/myMapping/onRequest_include.cfm" />

    <cfinclude template = "/myMapping/onRequestEnd_include.cfm" />

</cffunction>

请注意使用映射(在我们的示例中为/ myMapping),如果您在CFC中执行此操作,则可以提供帮助。如果不需要映射,只需删除它。

但可能最好的选择是从Application.cfc中实例化你的CFC并使用它。

<cfset myConv = createObject("component", "myMapping.conv").init() />

再次使用映射来到CFC。并不总是需要.init()取决于您的CFC的设置方式。

然后假设conv有你想要使用的方法(你把它作为一个单独的函数来讨论?cfc本质上是一个对象,所以你首先将它创建为一个对象然后使用它的方法),然后您之后使用...

调用
myConv.functionName()

换句话说 - Application.cfc与代码中的任何其他地方没有什么不同。如何在其他地方调用和使用它是如何在这里做的。唯一的技巧可能是路径到CFC,您可以通过创建自定义映射来完成。

还考虑去旧学校(如果它只是一个功能),并使用自定义标签。

祝你好运。