2009-05-19 13 views
26

Afin de déboguer je voudrais jeter certaines variables sur ma page Web. Comment puis-je faire cela à l'intérieur d'une balise cfscript?Comment faire un cfdump dans une balise cfscript?

J'ai essayé ce qui suit, mais il ne fonctionne pas:

<cfscript> 
    ... 
    <cfif cgi.REMOTE_ADDR eq "IP"> 
    <cfdump var="#var1#"><br/> 
    </cfif> 
    ... 
</cfscript> 

Des indices sur ce qui peut être fait?

+0

fortement liée: http://stackoverflow.com/questions/1917706/cfdump-cfcomponent-cfscript/1917756 – ale

Répondre

39

Vous ne pouvez pas le faire directement comme cela dans les versions antérieures à CF 9. Vous pouvez cependant utiliser la fonction UDF dump() trouvée dans CFLib. Il y a toute une bibliothèque d'UDF qui imitent les étiquettes CF qui n'ont pas d'équivalents CFSCRIPT directs. ColdFusion 9 (et plus) offre la fonction writeDump().

3

Il serait assez facile d'écrire le vôtre aussi. Vous définissez simplement une fonction dans cfml plutôt que dans cfscript. Vous pouvez aussi utiliser cfaborts et cfloops.

Quelque chose comme ça (du haut de ma tête ... pas exécuté).

<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> 
29

utilisation writeDump() comme la façon dont vous utilisez writeOutput()

voir writeDump sur CF 9 référence

+0

Cela fonctionne parfaitement pour moi dans toutes les situations jusqu'à présent. – JimP

5

est-ce pas ce qui suit beaucoup plus facile et simple?

oAdmin = createObject("component", "cfide.adminapi.base"); 
oAdmin.dump(myVar); 

Fonctionne sur CF7 et avance, peut-être même plus tôt.

-2

Pour le vidage, nous utilisons Writedump (myvar); au lieu de dans cfscript et même nous utilisons abandonner; au lieu de quitter l'exécution du programme à n'importe quelle instance. nous utilisons writeoutput(); au lieu de

<cfoutput>#myvar#</cfoutput> 

ci-dessous est le code de vidage et d'abandon dans cfscript.

writedump(myvar); for dump 

abort; for stop execution of programm 

writeoutput(myvar); for output within cfscript 
2

Maintenant simples noms de balises autorisés dans cfscript à partir ColdFusion 11

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