2011-07-29 8 views
3

私は最新のバージョンのrailoを使用しており、アプリケーションごとのマッピングを動作させようとしています。これは私がやっているものです:。railo application.cfc this.mappings not working

<cfcomponent name="MyApp"> 
    <cfset THIS.Name = "MyApp"> 
    <cfset THIS.Mappings["/myapp"] = ExpandPath(".")> 
</cfcomponent> 

をので、私はmyappにしてこのアプリケーションフォルダ内のコンポーネントにアクセスすることができるようにしようとしています*むしろrootapp.myappにするよりも、マッピング*(私が理解から。

しかし、このマッピングでは私のコンポーネントにアクセスすることはできません。コード内のアプリケーション変数でcfdumpを実行すると、 "applicationname"が "MyApp"に設定されていることが表示されます"しかし、何も表示されません。

これらのマッピングをサポートしていないか、何か間違っていますか?

EDIT:

invalid component definition, can't find myapp.data.MyObject 

myappマッピングが行われているはずです、とMyObjectが存在する:

これは私が取得しています正確なエラーです。ここに私の構造は次のとおりです。要するに

/rootfolder/myapp/Application.cfc 
/rootfolder/myapp/data/MyObject.cfc 
/rootfolder/myapp/pages/MyPage.cfm 

、「MyPage.cfmは、」簡単に「MyObjectに」コンポーネントにアクセスするためのマッピングに依存しています。 Application.cfc をロードする必要があります。cfmlプロセッサはディレクトリが見つかるまでディレクトリの移動を開始する必要があります。

答えて

2

この構文を使用してみてください、私は、ディレクトリツリー内の深いアプリケーションのために同じことをやってきたし、それが正常に動作します。

しかし、私のコンポーネントは、このマッピングによってアクセスすることができません

正確なエラーとは何ですか? "無効なコンポーネント定義、myapp.xyzが見つかりません"

あなたのcfmとcfcは同じディレクトリにありますか?

をし、私は私のコードでアプリケーション変数にはcfdumpを行うとき、それは「アプリケーション名」を「MyAppの」設定されていることが表示されます(これは何をしようとする基本的である)が、何ものために示していませんマッピング。

アプリケーションスコープをダンプすると、この情報は表示されません。通常のcfcとしてApplication.cfcを使用するオプションのみです。

<cfset app = CreateObject("component", "application") /> 
<cfdump var="#app#"> 

EDIT。ここには2つの解決策があります。

このようなマッピングを定義すると、アプリケーションのパスが計算されます。CFC:

<cfset this.mappings["/myapp2"] = getDirectoryFromPath(getCurrentTemplatePath())> 

またはこのような変化成分パス:

<cfset MyObject = CreateObject("component", "myapp.data.MyObject") /> 

問題はExpandPathgetCurrentTemplatePath()で返されるパスとの違いです。

+0

元の質問に私の編集を参照してください... – jzimmerman2011

+0

今、それはより理にかなっています。更新された回答をご覧ください。 – Sergii

+0

は魅力のように機能し、何よりも最善です。ありがとう! – jzimmerman2011

2

更新: Sergiiが指摘したように、構文は有効ですが、ネット効果は同じです。

あなたの構文はOKです

<cfcomponent> 
    <cfset THIS.Name = "MyApp"> 
    <cfset THIS.mappings = { "/myapp" = ExpandPath(".") } > 
</cfcomponent> 
+0

この構文は全く同じです。 – Sergii

+0

Duh!あなたが正しいです。私のcfcのパスは間違っていた。愚かな私.. – Leigh