Zum Inhalt springen

Raw-ViewHelper? (Child nicht mit HTML-Entities rendern)

Erstellt am 4. März 2011 · Noch keine Antworten

Tags: Fluid, ViewHelper, Frage

sunixzs ·

Hallo,

bei einer Controller-Action will ich eine Email losschicken. Diese wird mit t3lib_htmlmail gesendet.

Inhalt der Email ist ein Plaintext und ein HTML-Part.

$htmlMail->addPlain($plain);
$htmlMail->setHtml($html);

Dafür gibt es zwei Views mit zwei Template-Dateien:

- notifyMail.html für den HTML-Part
- notifyMail.txt für den Plaintext-Part

Fluid bekommt nun diverse Variablen mitgeteilt, die in diesen Template-Dateien geparsed werden. Im HTML-Template will ich, dass Zeichen wie "<", "&", usw. excaped werden. Dazu brauche ich nichts weiter machen, weil Fluid die Variablen vor der Ausgabe umwandelt.

Im Plaintext-Part der Email soll das aber nicht der Fall sein. HTML-Entities im Plaintext sehen schrecklich aus ;-)

Bisher habe ich keinen ViewHelper gefunden, der einfach dessen Value zurückgibt ohne diesen zu rendern.

Versuchter RawVielHelper:

Class Tx_MyExt_ViewHelpers_RawViewHelper Extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
	Public Function render() {
		return $this->renderChildren(); // Childs werden umgewandelt in HTML

		// Gibt es sowas:?
		return $this->allesWasZwischenDenViewHelperTagsStehtOhneZuRendern;
	}
}

Kann man im ViewHelper einfach das zurückgeben, was dazwischen steht?

$var = "Das hier soll einfach so ausgegeben werden wie es ist. Also z. B. & und nicht &amp;";
<tx:Raw>{var}</tx:Raw>

soll so aussehen:

Das hier soll einfach so ausgegeben werden wie es ist. Also z. B. & und nicht &amp;

und nicht so:

Das hier soll einfach so ausgegeben werden wie es ist. Also z. B. &amp; und nicht &amp;amp;

Vielen Dank für eure Hilfe.

LG sun

Edith sagt: Beispiel geändert.

Edith Zwei sagt:
So könnte die Render-Methode des ViewHelper aussehen:

Public Function render($value = NULL) {
	return ($value != NULL) ? $value : $this->renderChildren();
}
<tx:Raw value="{var}" /> <!-- Gibt {var} im Klartext zurück ohne es weiter zu bearbeiten. -->
<tx:Raw />{var}</tx:Raw> <!-- Nachteil: Gibt {var} gerendert zurück (keine Ahnung wie ich das ändern kann).-->