[英]How to traverse two levels up when referencing a coldfusion component in a cfinvoke?
如果我不想進行任何映射,則還有另一種方法可以在組件中調用方法,即“兩級升級”。 像這樣:
service
component_to_call.cfc
mem
pages
handlers
calling.cfc
這是我從calling.cfc
內部calling.cfc
:
<cfinvoke
component="service.component_to_call"
method="do_the"
param1="#renderedResults#"
param2="#taskByName#"
returnvariable="tamperedCode">
</cfinvoke>
這引發了一個錯誤,即找不到service.component_to_call
。
問題:
如何調用父文件夾中的組件?
您可以從更高級別將CFC包含在與調用CFC處於同一級別的Proxy.cfc中,然后通過添加extend =“ Proxy”作為調用CFC的屬性來擴展Proxy.cfc。
示例Proxy.cfc
<cfcomponent name="Proxy">
<cfinclude template="../../service/component_to_call.cfc">
</cfcomponent>
調用cfc的示例
<cfcomponent name="calling" extends="Proxy">
</cfcomponent>
您為什么不想使用映射? 有點奇怪。
無論如何,只要直接瀏覽到您要實例化的CFC,它將輸出它的自動生成的API文檔,第一件事就是它的全點划線路徑。 您可以使用它。 但是那是絕對的,不是相對的。
您不能做的就是以某種方式指定一個相對路徑,例如可能使用一個文件(例如:“ ../../ fileInGrandparentDir.cfm”。。。。。。)
一種替代方法是將某個目錄作為兩個CFC的祖先,成為一個自定義標簽路徑,然后您可以通過CFC的文件名引用它們,然后CF會找到它們。 如果目錄結構復雜,則這樣做會降低性能。 話雖如此 ,但對性能的影響並不大 。
真的...您應該在應用程序目錄的頂層有一個映射,然后使用該映射對CFC進行全路徑處理。 我認為這就是通常的做法,並且是最可移植的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.