如何在cfscript标签内执行cfdump操作?

29
为了调试,我想将某些变量转储到我的网页上。如何在cfscript标签内部实现?
我尝试了以下代码,但它并没有起作用:
<cfscript>
  ...
  <cfif cgi.REMOTE_ADDR eq "IP">
    <cfdump var="#var1#"><br/>
  </cfif>
  ...
</cfscript>
任何线索可以做些什么?

强相关:https://dev59.com/EkrSa4cB1Zd3GeqPZ94n#1917756 - ale
7个回答

43

在CF 9之前的版本中,您不能直接像那样做。但是,您可以使用在CFLib中找到的dump() UDF。那里有一个完整的UDF库,模仿了没有直接CFSCRIPT等效项的CF标记。

ColdFusion 9(及更高版本)提供了writeDump()函数。

Adobe文档链接WriteDump()函数


32

使用writeDump()的方式就像使用writeOutput()

请查看CF 9参考文档上的writeDump


5
以下方法更加简单明了,你觉得呢?
oAdmin = createObject("component", "cfide.adminapi.base");
oAdmin.dump(myVar);

它适用于CF7及其以后版本,甚至可能适用于更早的版本。


3

从ColdFusion 11开始,在cfscript中允许使用普通标签名称。

<cfscript>
    cfdump (var=#myVar#);
</cfscript>

3

如果您想自己编写代码,也很容易。您只需在CFML中定义一个函数而不是CFScript即可。您也可以使用此方法执行CFAbort和CFLoop。

像这样(脑海中的想法...未经执行)。

<CFFUNCTION NAME="MyDump">
    <CFARGUMENT NAME="OBJ" Required="TRUE">
    <CFDUMP VAR="#Obj#">
</CFFUNCTION>
<CFSCRIPT>
  if(cgi.REMOTE_ADDR eq "IP"){
    MyDump(Var1);
  }
</CFSCRIPT>

2
<cffunction name="setAbort" access="private" returntype="void" output="false">
 <cfdump var="#arguments#"/><cfabort>
</cffunction>

-1

对于转储,我们使用Writedump(myvar);而不是在cfscript中使用,同样,我们使用abort;而不是使用来退出程序的执行。我们使用writeoutput();而不是

 <cfoutput>#myvar#</cfoutput>

以下是CFScript中转储和中止的代码。

writedump(myvar); for dump

abort; for stop execution of programm 

writeoutput(myvar); for output within cfscript

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接