2012-10-05 3 views
0

매핑을하고 싶지 않은 경우 구성 요소에서 메서드를 호출 할 수있는 다른 방법이 있습니다 (두 수준 위로). 그래서 같이 :cfinvoke에서 coldfusion 구성 요소를 참조 할 때 두 레벨 위로 이동하는 방법은 무엇입니까?

service 
    component_to_call.cfc 
    mem 
    pages 
    handlers 
     calling.cfc 

calling.cfc 내부에서 내 전화는 다음과 같습니다

service.component_to_call을 찾을 수 없다는 오류가 발생합니다
<cfinvoke 
    component="service.component_to_call" 
    method="do_the" 
    param1="#renderedResults#" 
    param2="#taskByName#" 
    returnvariable="tamperedCode"> 
    </cfinvoke> 

.

누계 :
상위 폴더에서 구성 요소를 호출하려면 어떻게해야합니까?

+2

왜 매핑을 만들지 않겠습니까? –

+0

어떤 CF 버전을 사용하고 있습니까? 이것은 당신이 사용할 수있는 프록시 기술의 종류에 관계가 있습니다. 나는 CF 8 또는 이전에 내 대답에서 언급 한 기법을 실제로 청소기 믿습니다. ColdFusion 요리 책, http://www.coldfusioncookbook.com/ – JamesRLamar

+0

에서 'coldfusion8'을 사용하여 그 예를 검토 할 수 있습니다. mappgins은 신경 쓰지 말고 다음 주에 서버에서만 아무 것도 재설정 할 수 있습니다. 그래서 "주말 솔루션"을 찾고있었습니다 – frequent

답변

3

가 왜 매핑을 사용하지 않으려는 CFC 호출? 조금 이상합니다.

어쨌든 인스턴스화 할 CFC를 직접 찾아보고 자동 생성 된 API 문서를 출력하므로 가장 먼저 점선으로 된 전체 경로가 표시됩니다. 당신은 그것을 사용할 수 있습니다. 그러나 그것은 절대적이며 상대적인 것이 아닙니다.

당신이 할 수없는 것은 어떻게 든 (파일 하나의 힘과 같은 상대 경로를 지정하는 것입니다 예를 들면 : "../../ fileInGrandparentDir.cfm"... 사람은 할 수없는 CFC 경로

.

다른 대안은 두 CFC의 조상 인 디렉토리를 커스텀 태그 경로로 만드는 것입니다. 그런 다음 파일 이름으로 CFC를 참조하면 CF가 그 디렉토리를 찾을 수 있습니다. 디렉토리 구조가 복잡하면 성능이 저하됩니다 그렇다고해서 : 많은 실적이에 도달했습니다.

정말 ... 앱 디렉토리의 최상위 수준에 대한 매핑이 있어야하며 완전히 매핑 할 수 있어야합니다. h CFC. 그것이 일반적으로 수행되는 방식이며, 가장 휴대 가능한 접근 방식이라고 생각합니다.

+0

그냥 위에 언급 된. 사실 나는 참조하는 서비스 폴더에 대한 매핑을 가지고 있습니다. 이상하게도, 2 단계 아래로, 그것은 더 이상 작동하지 않습니다. 그래도 정보 주셔서 감사합니다! 항상 감사합니다. – frequent

+0

매핑을 어떻게 지정하고 있으며이 매핑이 "작동하지 않음"을 어떻게 나타 냈습니까? * 그 문제를 해결하기보다는 해결해야 할 문제. 다른 질문을 시작하도록 제안 할 수는 있지만 @ 정렬 할 수 있습니다. –

+0

@AdamCameron, 필자는 동일한 상황을 잠시 뒤로 가졌기 때문에 매핑 수정을 확인하는 데 관심이 있었을 것이므로 해결 방법을 이끌어 냈습니다. – JamesRLamar

3

호출하는 CFC와 동일한 수준의 Proxy.cfc에 레벨의 CFC를 포함시킨 다음 호출하는 CFC의 특성으로 extends = "Proxy"를 추가하여 Proxy.cfc를 확장 할 수 있습니다.

예 Proxy.cfc

<cfcomponent name="Proxy"> 
<cfinclude template="../../service/component_to_call.cfc"> 
</cfcomponent> 

<cfcomponent name="calling" extends="Proxy"> 
</cfcomponent> 
+0

hm. 좋은 해결 방법. 이 마음도 지켜야합니다. – frequent

+0

나는 몰라. 나에게 그 코드는 "하나가 * 할 수 * 있다고해서 * 무언가를해야한다는 것을 의미하지는 않는다"의 모범이다. 그냥 잘못된 것 같습니다. 그러나 마일리지는 다릅니다. –

+0

나는이 일을 피하려고 노력하지만 때로는 정확히 무엇이 필요 할까? –

관련 문제