Zum Inhalt springen

Powermail: Nur fieldsets senden, deren fields valide sind

Erstellt am 14. April 2014 · 1 Antwort · letzte Antwort am 11. Juli 2014

Tags: Powermail, TYPO3 4.x, Frage

momoono ·

Hallo, liebes Forum,

wir haben ein recht einfaches powermail-Formular, welches aber eine große Anzahl an fieldsets hat, welche wiederum 3 fields enthalten:

- 1x "typo3 pagecontent" (mit einer Referenz auf ein text&image-Element)
- 2x "select box" (drop-down-Boxen)

Das Ziel ist es, nur die fieldsets zu übertragen, die valide Werte haben, d.h. in der Praxis, dass nur die fieldsets versendet werden sollen, von denen alle fields valide sind.

Dabei wird das pagecontent-Element bereits ignoriert - das ist okay.
Die Validierung der select-boxes machen wir mit der Pipe-Lösung, d.h., dass man dem ersten, blinden item eine Pipe anstellt - bei der Auswertung wird dieses Element dann der Indikator, ob das Feld ausgefüllt ist oder nicht. Bsp:

kein Wert|
Wert 1
Wert 2

Wenn nun das Formular gesendet wird, klappt das soweit schon ganz gut, d.h. wir bekommen nur die Felder, die auch gefüllt sind.

Das Problem ist, dass durch das Wegfallen des TYPO3-pagecontent-Elements dann in der Liste nicht steht, um welches fieldset es sich handelt.

Wenn aber noch ein "some text"-Element eingeführt wird, steht das wiederum IMMER da, auch wenn die selects invalid sind und nicht mitgesendet werden.

Ziel wäre jetzt: Sende die fieldsets nicht, deren selects ALLE invalid sind.

Mit powermail-conditions kommen wir nicht weiter, da das eher Serverabfragen betrifft.

Hat da jemand eine schöne Idee? Gerne auch ganz anders! 🙂

Beste Grüße!

einpraegsam.​net ·

Hmmm, gute Frage.

Wenn ihr Hiddenfields mit Werten hinzufügt, habt ihr diese natürlich auch immer drin.

In dem Fall wird es wohl das beste sein, dass E-Mail-Template selber zusammenzubauen (an Stelle der Nutzung von {powermail_all} lieber so etwas (Beispiel ReceiverMail.html):

{namespace vh=Tx_Powermail_ViewHelpers}
<f:layout name="Mail" />

<f:section name="main">
	<f:if condition="{vh:Condition.Or(array:'{0:\'{selection_1_1}\',1:\'{selection_1_2}\'}')}">
		<h3>Fieldsetthema 1</h3>
		{selection_1_1}<br />
		{selection_1_2}<br />
	</f:if>
	<f:if condition="{vh:Condition.Or(array:'{0:\'{selection_2_1}\',1:\'{selection_2_2}\'}')}">
		<h3>Fieldsetthema 2</h3>
		{selection_2_1}<br />
		{selection_2_2}<br />
	</f:if>
</f:section>