2011-07-29 53 views
3

我正在使用最新版本的railo,並試圖讓每個應用程序映射工作。這是我在做什麼:railo application.cfc this.mappings無法正常工作

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

所以,我想能夠通過MYAPP這個應用程序文件夾中訪問組件*映射,而不必到rootapp.myapp *(從我的理解。 ,然後這個組件設置應該工作

但是,我的組件不能被這個映射訪問,並且當我在我的代碼中對應用程序變量執行cfdump時,它將顯示「applicationname」設置爲「MyApp 「,但沒有顯示映射。

不支持這些映射,或者我做錯了什麼?

編輯:

這是我得到確切的錯誤:

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

myapp映射應該已經作出,而MyObject確實存在。這裏是我的結構:「MyPage.cfm」依靠映射輕鬆訪問「MyObject」組件。 Application.cfc 應該加載,因爲cfml處理器應該開始向上移動目錄直到找到目錄。

回答

2

你的語法是OK的,我只是做了應用程序相同的深目錄樹,它工作正常。

然而,我的組件不能被這種映射訪問,

什麼是確切的錯誤? 「無效的組件定義,無法找到myapp.xyz」?

你的cfm和cfc在同一個目錄下嗎? (這基本上是你試圖做的)

當我在我的代碼中的應用程序變量上做一個cfdump時,它會顯示「應用程序名稱」設置爲「MyApp」,但沒有顯示映射。

您不會通過傾銷應用程序範圍來查看此信息。唯一的選擇是像往常一樣使用Application.cfc。

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

編輯。你在這裏有兩個解決方案。

定義這樣的映射,所以路徑將被計算爲應用程序。CFC:

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

或更改組件路徑是這樣的:

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

問題是在由ExpandPathgetCurrentTemplatePath()返回路徑之間的差異。

+0

好吧,看我原來的問題編輯... – jzimmerman2011

+0

啊哈,現在它更有意義。請參閱最新的答案。 – Sergii

+0

就像一個魅力,最重要的是,它是有道理的。謝謝! – jzimmerman2011

2

更新: Sergii指出,語法是有效的,但實際效果是一樣的。

嘗試使用此語法

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

此語法完全相同。 – Sergii

+0

呃!你是對的。我的cfc路徑是錯誤的。傻我.. – Leigh