2012-10-05 28 views
0

如果我不想做任何映射,是否有另一种方法来调用组件中的方法,即“两个层次”。像这样:如何在引用cfinvoke中的coldfusion组件时遍历两个层次?

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:
我如何可以调用父文件夹中的组成部分?

+2

为什么你不想创建映射? –

+0

您使用的是什么版本的CF?这可能与您可以使用哪种代理技术有关。我相信在CF8或更高版本中,我在答案中提到的技术实际上是更清洁的。您可以在ColdFusion Cookbook中查看该示例,http://www.coldfusioncookbook.com/ – JamesRLamar

+0

使用'coldfusion8'。不介意mappgins,但只能在下周重置服务器上的任何内容。所以我正在寻找一个“周末解决方案” – frequent

回答

3

为什么你不希望使用映射?这有点奇怪。

无论如何,只需直接浏览到您希望实例化的CFC,它会输出它自动生成的API文档,第一件事就是它的完整虚线路径。你可以使用它。但是,这是绝对的,不是相对的。

什么,你不能做的就是以某种方式指定一个文件就像一个实力相对路径(例如:“../../ fileInGrandparentDir.cfm” ......一个人不能做与CFC路径

另一种方法是将某些目录作为CFC的祖先,并将其转换为自定义标记路径,然后您可以通过文件名引用CFC,然后CF会找到它们。如果目录结构复杂那就是说:不是太多了的性能命中

真的......你应该有一个映射到应用程序目录的顶层,然后使用映射来完全地pat h氟氯化碳。这就是通常的做法,我认为这是最便于运输的方法。

+0

刚才评论上面。其实我有一个映射到服务文件夹,我一直在参考。奇怪的是,2级下来,它不再工作了。不过,谢谢你的信息!永远感激。 – frequent

+0

你如何指定映射,它是如何体现这种“不工作”? *这是你应该解决的问题,而不是解决问题。我可以建议你开始另一个问题,我们可以看看@整理出来吗? –

+0

@AdamCameron,我会很感兴趣的看到映射修复,因为我有同样的情况一阵子回来,这导致了我给的解决方法。 – JamesRLamar

3

您可以将CFC从级别中包含在与调用CFC相同级别的Proxy.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> 
+0

hm。很好的解决方法。也必须保持这种想法。 – frequent

+0

我不知道。对我来说,这段代码就是一个例子,“仅仅因为一个*可以*做某事并不意味着一个*应该*做一些事情”。这似乎是错误的。里程不同。 –

+0

我尽量避免这样做,但有时它正是需要的 –