1

application.cfcで定義したマッピングを他のcfcの他の関数で機能させるにはどうすればよいですか?

つまり、this.mappings ["plugins"]はどのページでも問題なく機能しますが、this.mappings["plugins"]を呼び出す関数を含むcfcをインスタンス化しようとすると失敗します。

ありがとう

編集:わかりません-これが私がやろうとしていることです:application.cfcで:

this.mappings["Plugins"] = \
getDirectoryFromPath(getCurrentTemplatePath())&'Assets/Plugins';

およびstock.cfc:

<cfcomponent output="yes" > 
<cffunction name="showIndecies" access="public" output="yes" returntype="string">
<cfscript>
j = 1; 
variables.indeciesArray = ArrayNew(1); 
variables.indeciesFile = \
application.mappings["Plugins"]&'/StockMarketData/Data/indecies.csv'; 
</cfscript>
4

3 に答える 3

3

マッピングを間違って呼んでいると思います。application.cfcでの定義の使用:

this.mappings["plugins"]

その後、他のコードで「プラグイン」によって参照されるため、次のようになります。

var aName = new plugins.theCFC()
var aName = createObject("component","plugins.theCFC").init()
<cfinclude template="/plugins/aFile.cfm">

HTH、そうでない場合は、呼び出しページにコードを投稿してください。

于 2011-01-14T18:30:54.903 に答える
1

Application.cfcが1つであるCFCの内部では、「this」スコープはその特定のCFCにのみ関係します。したがって、Application.cfcの管轄下にあるCFMページを表示している場合、「this」スコープはApplication.cfcを対象としていますが、CFCを使用している場合は、その特定のCFCを対象としています。

そうは言っても、なぜマッピング構造体に直接アクセスする必要があるのでしょうか。<cfinclude template="/plugins/path/to/myfile" />そのマッピングを使用してオブジェクトをロードしたり、ファイルをインクルードしたりする場合は、またはを実行できます<cfset obj = createobject("component","plugins.path.to.my.cfc") />

構造体に直接アクセスする必要がある場合のユースケースは何ですか?あなたはそれを修正しようとしていますか?

*コードを修正するために編集

于 2011-01-14T18:30:48.893 に答える
1

CF9で状況が変更されていない限り、各マッピング名の先頭にスラッシュ「/」を付けずにマッピングキーを定義しているコードでの最初の間違い。

マッピングを次のように定義しています

this.mappings["plugins"] =

代わりに

this.mappings["/plugins"] =

構造キー名のスラッシュ「/」に注意してください。各マッピングにそのように名前を付ける必要があります。

次に、SamFarmerがコメントで述べたようにマッピングを参照します。」

その後、他のコードで「プラグイン」によって参照されるため、次のようになります。

var aName = new plugins.theCFC()
var aName = createObject("component","plugins.theCFC").init()
<cfinclude template="/plugins/aFile.cfm">
于 2011-09-26T18:56:48.047 に答える