coldfusion
2017-09-12 44 views 2 likes 
2

我有一个叫做“conv”的函数,它在我的应用程序中的几个程序中是需要的。因此,而不是包括在每一个程序,我把它放在Application.cfm,这是这样的:ColdFusion Application.cfm cfinclude不起作用

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

当我使用功能“转化”(这是在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

我呃,不要以为它是如何工作的。您需要创建一个cfc实例并通过其中一个范围(例如应用程序)将其提供给应用程序。 –

+0

@ KevinB的评论是对这个问题的正确答案。 –

+0

你能帮我在这里进一步吗?我如何通过应用程序范围使其可用? –

回答

3

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

<cfinclude template="conv.cfc"> 

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

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

当你想该对象中访问的功能,试试这个......

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

你可以在CFC中包含CFM页面,但我认为你不能将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,您可以通过创建自定义映射来完成该操作。

还可以考虑去老派(如果它只是一个功能),并使用自定义标签。

祝你好运。

相关问题