【问题标题】:How do you track templates calls in ColdFusion?您如何在 ColdFusion 中跟踪模板调用?
【发布时间】:2016-06-07 18:57:49
【问题描述】:

如何在 ColdFusion 中跟踪模板路径?

I.E. 我有以下文件夹和文件结构

  • 索引.cfm

    <cfset ArrayAppend(request.Trace, '/')> <cfdump var=#request.trace#>

    • index.cfm

      <cfset ArrayAppend(request.Trace, '/foo/')> <cfinclude template='../'>

    • 条形

      • index.cfm

        ArrayAppend(request.Trace,'/foo/bar/')> <cfinclude template='../'>

当我打电话给foo/bar/index.cfm时, request.Trace 等于:

  • '/foo/bar/'
  • '/foo/'
  • '/'

如果不明确声明每个文件夹名称,我怎么能做到这一点?

【问题讨论】:

    标签: coldfusion


    【解决方案1】:

    看看:

    • expandPath(".")
    • getBaseTemplatePath()
    • getCurrentTemplatePath()
    • CGI.CF_TEMPLATE_PATH
    • CGI.PATH_TRANSLATED
    • CGI.SCRIPT_NAME

    如果你想要模板堆栈跟踪,使用这个:

    <cfset templateTrace = []>
    <cfset tagTrace = createObject("java","java.lang.Exception").init().TagContext>
    <cfloop array="#tagTrace#" index="tagInfo">
        <cfset templateTrace.add(tagInfo.Template)>
    </cfloop>
    <cfdump var="#templateTrace#">
    

    这将输出传递给此调用的所有模板。

    【讨论】:

    • 谢谢!这就是我一直在寻找的。我更新了问题以更好地适应解决方案
    • 这太棒了!谢谢@Alex,它对调试很有帮助。
    【解决方案2】:

    不理想,但这对我有用。

    <cfset currentFile = GetCurrentTemplatePath()>
    <cfset currentDir = GetDirectoryFromPath(currentFile)>
    <cfset webroot = expandPath("/")>
    <cfset m_Trace = Replace(currentDir, webroot , '\')>
    <cfset ArrayAppend (request.Trace, m_Trace )>
    

    【讨论】:

    • 我编辑了我的帖子以包含一种无需在每个模板中放置代码即可检索模板堆栈跟踪的方法。
    猜你喜欢
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2015-06-05
    相关资源
    最近更新 更多