在另一个文件夹级别调用CFC

时间:2016-01-07 14:26:20

标签: coldfusion cfc

我有一个我使用cfc的页面。像这样:

<cfset cfcDashboard = new dashboard()>
<cfset grab_image = cfcdashboard.getPicture()>

如果cfc位于文件夹中,我如何调用它?到目前为止,只有当它们位于同一级别或同一文件夹内时才能工作?你如何称呼不同级别的cfc?

或者我不理解cfc的目的?

2 个答案:

答案 0 :(得分:4)

new关键字是此次调用的语法糖:

<cfset cfcDashboard = createObject("component", "Dashboard")>

ColdFusion如何解析CFC名称的规则是in the docs

  

如果您使用cfinvokecfobject代码或CreateObject   函数,从CFML页面访问CFC,ColdFusion搜索   目录按以下顺序排列:

     
      
  1. 调用CFML页面的本地目录
  2.   
  3. Web root
  4.   
  5. 在ColdFusion Administrator的自定义标记路径页面上指定的目录
  6.   

您可以使用与任何已定义搜索路径对应的点表示法。

<cfset myDashboard = createObject("component", "my.custom.Dashboard")>
<cfset myDashboard = new my.custom.Dashboard()>

将找到(其中.表示当前模板目录,/表示网络根目录):

  • ./my/custom/Dashboard.cfc
  • /my/custom/Dashboard.cfc
  • any/custom/tag/path/my/custom/Dashboard.cfc

不可能“向上”。

答案 1 :(得分:-1)

当然,没有办法“上”,但有一种方法可以使您从网站的顶层开始。

将此行放置在根Application.cfc文件中

<cfset this.directory = getDirectoryFromPath( getCurrentTemplatePath() ) />
<cfset this.mappings['/app'] = this.directory />

然后,当您键入cfinvoke行时,请像这样键入

当然,您想用组件所在的文件夹替换[子文件夹名称],并用组件的名称替换[组件名称]。其他所有内容都是普通的cfinvoke语法。

因此,以一种环岛的方式,有一种方法可以从子文件夹开始“启动”。