我有一个名为"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已经过测试,并且工作正常。
发布于 2017-09-13 09:22:55
不是使用include,而是像这样...
<cfinclude template="conv.cfc">尝试创建一个对象,就像这样...
<cfscript>
MyObject = createObject("component", "conv");
</cfscript>当您想要访问该对象中的函数时,请尝试以下方法...
<cfscript>
SomeValue = MyObject.MyFunction();
</cfscript>发布于 2017-09-13 19:42:05
您可以将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的路径。
也可以考虑使用老式的方法(如果它只是一个函数),并使用自定义标记。
祝好运。
https://stackoverflow.com/questions/46186197
复制相似问题