Ist output = false für die cfscript-Funktion in CFC?

7

Ich dachte, CFCs Methoden, die als Funktionen in cfscript definiert sind, sind standardmäßig output = false, aber wenn ich den CFC in cfcexplorer.cfc öffne (Browser direkt zum CFC), heißt es Output: enabled.

cfcexplorer.cfc's Fehler?

    
Henry 10.06.2009, 20:39
quelle

3 Antworten

16

Kurze Antwort : Es ist egal.

cfscript gibt nichts aus, solange Sie nicht explizit writeOutput () aufrufen. Dazu gehören Funktionen in cfscript sowie alle cfscript -Codes außerhalb einer Funktion.

Dies unterscheidet sich von der CF-Tags-Syntax, die standardmäßig mindestens Leerzeichen zwischen den Tags ausgibt. In cfscript wird jeder von Ihnen geschriebene Text von der CFML-Engine kompiliert. In CF-Tags wird jeder von Ihnen geschriebene Text in den Ausgabepuffer geschrieben und an den Browser gesendet.

Lange Antwort : Es ist dasselbe wie kein Ausgabeattribut anzugeben.

cfscript Blöcke geben nichts aus. Alle Tag-Blöcke geben, sofern nicht in cfsilent eingeschlossen, nur Leerzeichen aus. Ja, sogar cffunctions, aber die Ausgabe wird verworfen, wenn das Ausgabeattribut auf false gesetzt ist.

Die Essenz von Peter Boughtons Antwort ist richtig. Es ist weder in cfsilent noch in cfoutput verpackt. Ausgabe ist nicht verboten, aber es passiert nicht, es sei denn, Sie tun es explizit.

Sie können immer ein tagbasiertes cffunction mit Scripting kombinieren, um das Beste aus beiden Welten zu erhalten. Etwas wie ...

%Vor%

Damit können Sie eine Ausgabe und Zugriff auf das cffunction -Tag angeben sowie erlauben, dass Argumente optional sind (was Sie nicht mit cfscript functions tun können), dann füllen Sie den Körper mit cfscript, einschließlich var-Anweisungen und die Funktion zurückgeben.

Wenn Sie für diese Funktion das output -Attribut entfernen oder es in true ändern, wird es vor der Rückgabe " test " ausgeben.

    
Nathan Strutz 10.06.2009, 21:46
quelle
4

cfscript-Funktionen sind ein seltsamer Affe. Sie sind eine Art von beiden. Sie können nicht angeben, dass sie output="false" sind, aber sie sind, bis Sie eine writeOutput () verwenden, aber sie werden von cfcexplorer als output="true" gemeldet. Es ist ein merkwürdiges Thema, denke ich, dass der cfml Beratungskomitee gerade jetzt schaut.

    
Jayson 10.06.2009 21:16
quelle
1

Ich bin mir nicht ganz sicher, aber meine Vermutung wäre, dass die Skriptfunktionen in dieser Hinsicht den cffunction -Tags entsprechen - insofern als der Standardwert weder true noch false ist.

Wenn Sie das Attribut output für cffunction festlegen, gilt Folgendes:

  • true entspricht der Funktion, die in cfoutput eingepackt wird.
  • false entspricht der Funktion, die in cfsilent eingepackt wird.
  • Die Standardeinstellung (undefiniert) entspricht dem Standardcode, der weder mit cfoutput noch mit cfsilent umschlossen ist.

Allerdings benutze ich fast nie cfscript , und das ist vielleicht nicht der Fall - wir müssen auf andere warten und entweder bestätigen oder korrigieren.

    
Peter Boughton 10.06.2009 20:51
quelle

Tags und Links