我有一个名为“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
已经过测试,效果很好。
答案 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,您可以通过创建自定义映射来完成。
还考虑去旧学校(如果它只是一个功能),并使用自定义标签。
祝你好运。