Как сделать cfdump внутри тега cfscript?
Чтобы отлаживать, я хотел бы сбросить определенные переменные на мою веб-страницу. Как я могу сделать это изнутри тега cfscript?
Я пробовал следующее, но он не работает:
<cfscript>
...
<cfif cgi.REMOTE_ADDR eq "IP">
<cfdump var="#var1#"><br/>
</cfif>
...
</cfscript>
Любые подсказки о том, что можно сделать?
Ответы
Ответ 1
Вы не можете сделать это прямо так, как в версиях до CF 9. Однако вы можете использовать dump() UDF, найденный в CFLib. Там есть целая библиотека UDF, которая имитирует теги CF, которые не имеют прямых эквивалентов CFSCRIPT.
ColdFusion 9 (и вверх) предлагает функцию writeDump()
.
Ответ 2
используйте writeDump(), например, как вы используете writeOutput()
см. writeDump по ссылке CF 9
Ответ 3
Не следующее ли намного проще и проще?
oAdmin = createObject("component", "cfide.adminapi.base");
oAdmin.dump(myVar);
Он работает на CF7 и вперед, возможно, даже раньше.
Ответ 4
Было бы довольно легко написать свой собственный тоже. Вы просто определяете функцию в 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>
Ответ 5
<cffunction name="setAbort" access="private" returntype="void" output="false">
<cfdump var="#arguments#"/><cfabort>
</cffunction>
Ответ 6
Теперь имена простых тегов разрешены в cfscript, начиная с ColdFusion 11
<cfscript>
cfdump (var=#myVar#);
</cfscript>
Ответ 7
Для дампа мы используем Writedump (myvar); а не в cfscript, и мы используем прерывание; а не для выхода из выполнения программы в любом экземпляре. Мы используем writeoutput(); вместо
<cfoutput>#myvar#</cfoutput>
ниже приведен код для дампа и прерывания в cfscript.
writedump(myvar); for dump
abort; for stop execution of programm
writeoutput(myvar); for output within cfscript