質問

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

IE this.mappings ["Plugins"]はどのページでも正常に動作しますが、this.mappings ["プラグイン"]を呼び出す関数を含むCFCをインスタンス化しようとすると、失敗します。

ありがとう

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

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

in 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>
役に立ちましたか?

解決

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

this.mappings["plugins"]

その後、他のコードで「プラグイン」によって参照されます。

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

HTH、呼び出しページにコードを投稿しない場合。

他のヒント

CFC内のアプリケーションの内部は1つです。「この」スコープは、その特定のCFCにのみ関係しています。したがって、CFMページにいる場合、それはapplication.cfcの管轄に該当する場合、「この」スコープはapplication.cfc用ですが、CFCでは、その特定のCFCの場合です。

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

構造体に直接アクセスする必要があるためのユースケースは何ですか?変更しようとしていますか?

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

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

マッピングをとして定義しています

this.mappings["plugins"] =

代わりにそうあるべきです

this.mappings["/plugins"] =

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

その後、あなたはサム・ファーマーが彼のコメントで言及したようにマッピングを参照するでしょう」

その後、他のコードで「プラグイン」によって参照されます。

var aName = new plugins.theCFC()
var aName = createObject("component","plugins.theCFC").init()
<cfinclude template="/plugins/aFile.cfm">
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top