Как сделать cfdump внутри тега cfscript?
-
22-08-2019 - |
Вопрос
Для отладки я хотел бы загрузить определенные переменные на свою веб-страницу.Как я могу сделать это изнутри тега cfscript?
Я попробовал следующее, но это не работает:
<cfscript>
...
<cfif cgi.REMOTE_ADDR eq "IP">
<cfdump var="#var1#"><br/>
</cfif>
...
</cfscript>
Есть какие-нибудь подсказки о том, что можно сделать?
Решение
Вы не можете сделать это напрямую в версиях до CF 9.Однако вы можете использовать свалка() UDF найден в CFLib.Там есть целая библиотека UDF, которые имитируют теги CF, не имеющие прямых эквивалентов CFSCRIPT.
ColdFusion 9 (и более поздние версии) предлагает writeDump()
функция.
Документация Adobe Linkfor НаписатьДамп() функция
Другие советы
используйте writeDump() так же, как вы используете writeOutput()
видеть написать дамп по ссылке 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