我正在使用最新版本的railo,并且正在尝试让每个应用程序映射正常工作。这就是我正在做的:
<cfcomponent name="MyApp">
<cfset THIS.Name = "MyApp">
<cfset THIS.Mappings["/myapp"] = ExpandPath(".")>
</cfcomponent>
因此,我试图能够通过 myapp.* 映射访问此应用程序文件夹中的组件,而不必访问 rootapp.myapp.* (据我所知,此组件设置应该可以工作。
但是,我的组件无法通过此映射访问,并且当我对代码中的应用程序变量执行 cfdump 时,它将显示“applicationname”设置为“MyApp”,但没有显示任何映射。
Railo 不支持这些映射,还是我做错了什么?
EDIT:
这就是我得到的确切错误:
invalid component definition, can't find myapp.data.MyObject
the myapp
应该已经进行了映射,并且MyObject
确实存在。这是我的结构:
/rootfolder/myapp/Application.cfc
/rootfolder/myapp/data/MyObject.cfc
/rootfolder/myapp/pages/MyPage.cfm
简而言之,“MyPage.cfm”依赖于映射来轻松访问“MyObject”组件。应用程序.cfcshould被加载,因为 cfml 处理器应该开始向上移动目录,直到找到一个。
你的语法没问题,我刚刚对目录树深处的应用程序做了同样的事情,它工作得很好。
但是,我的组件无法通过此映射访问,
什么是精确误差? “组件定义无效,找不到 myapp.xyz”?
你的cfm和cfc在同一个目录下吗? (这基本上就是你想要做的)
当我对代码中的应用程序变量执行 cfdump 时,它将显示“applicationname”设置为“MyApp”,但没有显示任何映射。
通过转储应用程序范围,您将看不到此信息。唯一的选择是像往常一样使用 Application.cfc。
<cfset app = CreateObject("component", "application") />
<cfdump var="#app#">
编辑。这里有两个解决方案。
像这样定义映射,因此将为 Application.cfc 计算路径:
<cfset this.mappings["/myapp2"] = getDirectoryFromPath(getCurrentTemplatePath())>
或者像这样更改组件路径:
<cfset MyObject = CreateObject("component", "myapp.data.MyObject") />
问题在于返回的路径之间的差异ExpandPath
and getCurrentTemplatePath()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)