如果我不想做任何映射,是否有另一种方法来调用组件中的方法,这是“两级”。像这样:
service
component_to_call.cfc
mem
pages
handlers
calling.cfc
这是我在calling.cfc
内的电话:
<cfinvoke
component="service.component_to_call"
method="do_the"
param1="#renderedResults#"
param2="#taskByName#"
returnvariable="tamperedCode">
</cfinvoke>
会抛出无法找到service.component_to_call
的错误。
Qustion:
如何调用父文件夹中的组件?
答案 0 :(得分:3)
您可以在与调用CFC处于同一级别的Proxy.cfc中包含CFC级别的CFC,然后通过添加extends =“Proxy”作为调用CFC的属性来扩展Proxy.cfc。
示例Proxy.cfc
<cfcomponent name="Proxy">
<cfinclude template="../../service/component_to_call.cfc">
</cfcomponent>
调用cfc的示例
<cfcomponent name="calling" extends="Proxy">
</cfcomponent>
答案 1 :(得分:3)
为什么不想使用映射?这有点奇怪。
无论如何,只需直接浏览你想要实例化的CFC,它就会输出它自动生成的API文档,第一件事就是它的完整虚线路径。你可以用它。然而,这是绝对的,而不是相对的。
你不能做的是以某种方式指定一个可能与文件相关的路径(例如:“../../ fileInGrandparentDir.cfm”......用CFC路径不能这样做。
另一种方法是将一些CFC的祖先目录作为自定义标记路径,然后您可以通过文件名引用CFC,CF会找到它们。如果目录结构很复杂,那么这样做会带来性能损失。这就是说:不是很多的性能损失。
真的......你应该有一个映射到应用程序目录的顶层,然后使用映射来完全路径化CFC。我认为这就是通常的做法,也是最便于携带的方法。