1

マッピングを行いたくない場合は、コンポーネント内のメソッドを呼び出す別の方法があります。これは「2レベル上」です。そのようです:

  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が見つからないというエラーがスローされます。

質問:
親フォルダー内のコンポーネントを呼び出すにはどうすればよいですか?

4

2 に答える 2

3

なぜマッピングを使いたくないのですか?それは少し奇妙です。

とにかく、インスタンス化するCFCを直接参照すると、自動生成されたAPIドキュメントが出力されます。最初に、完全な点線のパスが出力されます。あなたはそれを使うことができます。ただし、これは絶対的なものであり、相対的なものではありません。

できないのは、ファイルのように相対パスを指定することです(例: "../../ fileInGrandparentDir.cfm"...CFCパスでは指定できません。

別の方法は、両方のCFCの祖先であるディレクトリをカスタムタグパスにすることです。その後、ファイル名でCFCを参照するだけで、CFがそれらを見つけます。ディレクトリ構造が複雑な場合、これを行うとパフォーマンスが低下します。とはいえ、パフォーマンスへの影響はそれほど多くありません。

本当に...アプリのディレクトリのトップレベルへのマッピングが必要です。次に、そのマッピングを使用してCFCを完全にパスします。それが一般的に行われている方法であり、最も移動しやすいアプローチだと思います。

于 2012-10-05T21:18:50.053 に答える
3

レベルアップしたCFCを呼び出し元のCFCと同じレベルのProxy.cfcに含めてから、呼び出し元のCFCの属性としてextends="Proxy"を追加してProxy.cfcを拡張できます。

Proxy.cfcの例

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

cfcの呼び出し例

<cfcomponent name="calling" extends="Proxy">
</cfcomponent>
于 2012-10-05T21:11:56.560 に答える