coldfusion
2017-09-12 108 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,您可以通過創建自定義映射來完成該操作。

還可以考慮去老派(如果它只是一個功能),並使用自定義標籤。

祝你好運。

相關問題