Как сделать cfdump внутри тега cfscript?
Для отладки я хотел бы вывести определенные переменные на мою веб-страницу. Как я могу сделать это из тега cfscript?
Я попробовал следующее, но это не работает:
<cfscript>
...
<cfif cgi.REMOTE_ADDR eq "IP">
<cfdump var="#var1#"><br/>
</cfif>
...
</cfscript>
Любые подсказки о том, что можно сделать?
7 ответов
Вы не можете сделать это напрямую в версиях до CF 9. Вы можете, однако, использовать UDF dump(), найденный в CFLib. Там есть целая библиотека UDF, которые имитируют тэги CF, которые не имеют прямых эквивалентов CFSCRIPT.
ColdFusion 9 (и выше) предлагает writeDump()
функция.
Ссылка на документацию Adobe для функции WriteDump()
Используйте writeDump(), например, как вы используете writeOutput()
см. запись writeDump в CF 9
Разве следующее не намного проще и понятнее?
oAdmin = createObject("component", "cfide.adminapi.base");
oAdmin.dump(myVar);
Он работает на CF7 и вперед, возможно, даже раньше.
Было бы довольно легко написать свой собственный тоже. Вы просто определяете функцию в cfml, а не в cfscript. Вы можете использовать это для выполнения cfaborts и cfloops.
Как-то так (с макушки головы... не выполнено).
<CFFUNCTION NAME="MyDump">
<CFARGUMENT NAME="OBJ" Required="TRUE">
<CFDUMP VAR="#Obj#">
</CFFUNCTION>
<CFSCRIPT>
if(cgi.REMOTE_ADDR eq "IP"){
MyDump(Var1);
}
</CFSCRIPT>
Теперь в cfscript разрешены простые имена тегов, начиная с ColdFusion 11
<cfscript>
cfdump (var=#myVar#);
</cfscript>
<cffunction name="setAbort" access="private" returntype="void" output="false">
<cfdump var="#arguments#"/><cfabort>
</cffunction>
Для дампа мы используем 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