Zum Inhalt springen

Formwizard der neuen Form extension (TYPO3 Ver. 4.6.0.)

Erstellt am 3. November 2011 · 29 Antworten · letzte Antwort am 9. Dezember 2014 · Seite 1 von 2

Tags: Frage

jansch ·
danaron schrieb

Der Betreff klappt wunderbar, Danke Jan!
Das mit dem eingegebenen E-Mail als Sender leider nicht.

Habe im localconf.php mal folgendes eingetragen:

$TYPO3_CONF_VARS['MAIL']['defaultMailFromAddress'] = 'absenderemail';
$TYPO3_CONF_VARS['MAIL']['defaultMailFromName'] = 'Name';

Hilft aber auch nicht wirklich. Was mach ich da falsch?

Hallo Danaron,

hast Du gesehen, dass dieses "absenderemail" der Name des Feldes ist, in dem der Nutzer seine Email eintragen muss? Deshalb hab ich auch ein Teil des Fieldsets noch gepostet.

die localconf hab ich nicht angefasst.

sg! jan

danaron ·

Danke Jan, ja, das habe ich gesehen...

Mein Code:

lang = de
method = post
title = Kontakt
prefix = kontakt
confirmation = 0
postProcessor {
	1 = mail
	1 {
		recipientEmail = max.muster@domain.com
		senderEmail = absenderemail
		subject = Kontakt
	}
}
10 = FIELDSET
10 {
	legend {
		value = Kontaktformular
	}
	10 = TEXTLINE
	10 {
		name = name
		label {
			value = Name
		}
	}
	20 = TEXTLINE
	20 {
		name = vorname
		label {
			value = Vorname
		}
	}
	30 = TEXTLINE
	30 {
		name = absenderemail
		label {
			value = E-Mail
		}
	}
	40 = TEXTAREA
	40 {
		cols = 40
		rows = 5
		name = enquiry
		label {
			value = Nachricht
		}
	}
	50 = RESET
	50 {
		value = löschen
	}
	60 = SUBMIT
	60 {
		name = submit
		value = senden
	}
	70 = TEXTBLOCK
	70 {
		class = content-textblock
		content = (Die mit <em>*</em> bezeichneten Felder müssen ausgefüllt werden)
	}
}
rules {
	1 = required
	1 {
		breakOnError = 0
		showMessage = 1
		message = *
		error = Bitte ausfüllen!
		element = name
	}
	2 = required
	2 {
		breakOnError = 0
		showMessage = 1
		message = *
		error = Bitte ausfüllen!
		element = vorname
	}
	3 = required
	3 {
		breakOnError = 0
		showMessage = 1
		message = *
		error = Dies ist ein Pflichtfeld
		element = absenderemail
	}
	4 = email
	4 {
		breakOnError = 0
		showMessage = 
		message = (max.muster@domain.com)
		error = Dies ist keine gültige E-Mail-Adresse
		element = absenderemail
	}
	5 = required
	5 {
		breakOnError = 0
		showMessage = 1
		message = *
		error = Bitte ausfüllen!
		element = enquiry
	}
}

Ist die confirmations Nachricht auch anpassbar pro Formular?

jansch ·

argh, mein fehler. das Feld heißt
senderEmailField
nicht
senderEmail

zu der anderen Frage weiß ich leider auch nix. wenn aber jemand herausfindet, wie man auf tsfe daten mit dem neuen Formhandler zugreift, lasst es mich wissen 🙂

sg! jan

jansch ·

So. habe jetzt auch das Problem gelöst, dass Variablen nicht mehr aufgelöst werden. Ob das ganze "sauber" gelöst ist, könnt ihr Euch ja streiten 😉 Hab keine Filter entfernen müssen, deshalb sollte es in jedem Fall sicher sein. Musste dazu in der Sysext rumpfuschen. die korrigierte Datei hängt an und ich erstelle gleich auch mal ein Featurerequest, falls es noch keins gibt.

Mit dieser Änderung ist es möglich, Werte aus dem TSFE auf folgende Weise direkt in den Formwizard zu schreiben.

20 = TEXTLINE
20 {
name = absenderemail
readonly = readonly
value = {TSFE:fe_user|user|email}
label.value = Deine Emailadresse
}

Typoscript.zip
3kB
anderlk ·

Hallo,
ich arbeite mich gerade auch in den neuen Formwizard ein, und komme an zwei Stellen nicht weiter:

1. Wie kann ich die Meldung "The form has been sent successfully by mail" welche nach dem Absenden erscheint anpassen? Könnte ich stattdessen auch auf eine Antwortseite weiterleiten?
2. Ist es möglich, dem Absender, sofern er eine Mailadresse angegeben hat eine Bestätigungsmail zu senden, dass die Nachricht erfolgreich eingegangen ist?

Vielen Dank,
Anderl

jansch ·
anderlk schrieb

Hallo,
ich arbeite mich gerade auch in den neuen Formwizard ein, und komme an zwei Stellen nicht weiter:

1. Wie kann ich die Meldung "The form has been sent successfully by mail" welche nach dem Absenden erscheint anpassen? Könnte ich stattdessen auch auf eine Antwortseite weiterleiten?
2. Ist es möglich, dem Absender, sofern er eine Mailadresse angegeben hat eine Bestätigungsmail zu senden, dass die Nachricht erfolgreich eingegangen ist?

Vielen Dank,
Anderl

Hi Anderl,

bei der ersten Teilfrage von 1. kann ich Dir helfen. Das kann man im Postprocessor eintragen.

postProcessor {
	1 = mail
	1 {
		messages {
			success = Hier Deine Erfolgstext
                        error = Fehlermeldung
		}
	}
}

Die anderen Dinge wären möglich, wenn Du Dir selbst einen weiteren Postprocessor schreibst. Das hab ich selbst aber auch noch nicht gemacht. Um die ganze Logik zu verstehen musst Du Dich mit Extbase gut auskennen, was ich selbst leider auch noch nicht tue. Der Typoscriptteil könnte dann so aussehen:

postProcessor {
	1 = mail
	1 {
		messages {
			success = Hier Deine Erfolgstext
                        error = Fehlermeldung
		}
	}
       2 = meinPostProc
       2 {
              forwardIDSeite = 36
              sendConfirmationMail = 1
       }
}

Jetzt musst Du der Form Extension noch irgendwie beibringen, dass sie eine PHP Klasse mit dem Namen tx_form_System_Postprocessor_meinPostProc erkennt und diese Klasse ausprogrammieren. Wenn Du es geschafft hast diese Klasse anzumelden, meld Dich mal wieder hier, die Klasse schreiben schaffen wir zusammen 🙂

Gruß, Jan

jansch ·
anderlk schrieb

Hallo,
ich arbeite mich gerade auch in den neuen Formwizard ein, und komme an zwei Stellen nicht weiter:

1. Wie kann ich die Meldung "The form has been sent successfully by mail" welche nach dem Absenden erscheint anpassen? Könnte ich stattdessen auch auf eine Antwortseite weiterleiten?
2. Ist es möglich, dem Absender, sofern er eine Mailadresse angegeben hat eine Bestätigungsmail zu senden, dass die Nachricht erfolgreich eingegangen ist?

Hallo Anderl,

hab für die erste Frage jetzt mal einen eigenen Postprocessor geschrieben. Die Anleitung dazu findest Du hier: http://alumnitypo3.blogspot.com/2011/12/typo3-46-und-die-neue-form-extension.html

Auf gleiche Weise kannst Du Dir dann auch nen weiteren Postprocessor schreiben, der dann die Email an den Absender schickt. Alles, was Du dafür brauchst findest Du sicher im Mail Postprocessor. Dann natürlich daran denken den Redirect Postproc. als letzten Postproc. einzufügen.

Schöne Grüße!

Jan

anderlk ·

Hallo Janssch,

danke für Deine Tipps. Wenn man mit Extbase noch nichts zu tun hatte, finde ich den Einstieg in den neuen Formwizard schon herftig, wenn man nur ein wenig mehr hätte als ein einfaches Kontaktforumlar,...
In der Doku findet man zum Beispiel gar keine Hinweise zu den postProcessor.

Wenn ich deinen Link richtig verstanden habe, muss ich die PHP Datei im extension ordner von Form ablegen, und die Postprocessor.php um die beiden zeilen erwweitern? das ist aber nicht schön, denn wenn ich ein Update fahre, muss ich das ganze wieder anpassen. Habe ich da etwas falsch verstanden, oder geht das nicht eleganter?

Aber immerhin ich habe es jetzt zumindest schon mal soweit hinbekommen, das das Formular korrekt versendet wird.

Habe auch rausgefunden, wie man den Absendernamen in die Mail integriert.

  senderNameField = name

Bei meinem Formular ist es aber jetzt so, dass ich als Name gerne Vor- und Nachname hättte, und beide stehen in getrennten Feldern.
Ist das standardmäßig auch möglich, oder brauche ich da auch schon einen eigenen Postprozessor?

Danke, Anderl

jansch ·
anderlk schrieb

Hallo Janssch,

danke für Deine Tipps. Wenn man mit Extbase noch nichts zu tun hatte, finde ich den Einstieg in den neuen Formwizard schon herftig, wenn man nur ein wenig mehr hätte als ein einfaches Kontaktforumlar,...
In der Doku findet man zum Beispiel gar keine Hinweise zu den postProcessor.

Wenn ich deinen Link richtig verstanden habe, muss ich die PHP Datei im extension ordner von Form ablegen, und die Postprocessor.php um die beiden zeilen erwweitern? das ist aber nicht schön, denn wenn ich ein Update fahre, muss ich das ganze wieder anpassen. Habe ich da etwas falsch verstanden, oder geht das nicht eleganter?

Aber immerhin ich habe es jetzt zumindest schon mal soweit hinbekommen, das das Formular korrekt versendet wird.

Habe auch rausgefunden, wie man den Absendernamen in die Mail integriert.

  senderNameField = name

Bei meinem Formular ist es aber jetzt so, dass ich als Name gerne Vor- und Nachname hättte, und beide stehen in getrennten Feldern.
Ist das standardmäßig auch möglich, oder brauche ich da auch schon einen eigenen Postprozessor?

Danke, Anderl

Hi Anderl,

Du musst einfach die Datei im Ordner
sysext\form\Classes\System\Postprocessor
ablegen. Die 2 Zeilen sind schon aus der Forward.php brauchst, die also nirgends anzupassen. Das Typoscript sagt dem PostProcessor nach was es suchen soll. Ist aber wie im Blog geschrieben nicht wirklich optimal in dieser Lösung. Ich verstehe aber noch nicht, wie ich es anders adressieren könnte.

Zu der anderen Frage kommst Du so zu einer Antwort (wenn Try and Error zu einfach ist):
1. Die Email wird im Mail Postprocessor zusammengebaut und versandt. Also suchst Du in der Datei
Mail.php im Ordner sysext\form\Classes\System\Postprocessor nach senderNameField und findest folgende Zeile:
$fromName = $this->requestHandler->get($this->typoScript['senderNameField']);

2. Jetzt musst Du noch schauen, was die Methode get() aus dem $this->typoScript['senderNameField'] macht. In der Variable $this->typoScript['senderNameField'] steht ja erst Mal nur der Wert der Variablen, in der der Wert steht. Also suchst Du immer noch in der Mail.php nach "requestHandler" und findest ganz oben folgende Deklaration:
/**
* @var tx_form_System_Request
*/
protected $requestHandler;

Das @var tx_form_System_Request sagt Dir, dass Du im Ordner Classes\System\Request die Datei Request.php suchen musst. In dieser Datei gibt es die get() Methode. Die gibt aber nur eine Variable zurück aus Get oder Post:
return $_GET[$this->prefix][$key];

d. h. Du müsstest Dir einen eigenen Postprocessor schreiben für dein Problem.

anderlk ·

Hallo Jansch,

super vielen Dank für Deine ausführliche Erläuterungen.
Na dann werde ich mich da wohl mal einarbeiten müssen.

Danke Anderl

ToBe ·

Danke Leute, das hat mir schon ein Stück weiter geholfen.

Ich habe schon einige Extbase-Extensions gebaut, aber finde die Einarbeitung in das neue Form Ding auch keinesfalls einfach oder zumindest durchschaubar... naja.
(zumindest kann man darüber nicht sagen, das es ein einfaches Werkzeug zur Verfügug stellt, mit dem man für die meinsten Ansprüche Formulare bauen und konfigurieren kann...schade eigentlich)

Nun zu meiner Frage:

Ich würde gern die E-Mail-Tempaltes anpassen. Wie bring ich dem jetzt bei mein eigenes Template zu verwenden? Es gibt dafür keine Settings in der Extension und auch keine vordefinierte Konstante...

weiß da jemand mehr?

ToBe ·

und noch ein Problem...

ich würde gern Felder im Formular vorbelegen.

also soetwas:

30 = TEXTLINE
30 {
	name = name
	label {
		value = Name
	}
        value = GP:test
}

klar das funktioniert natürlich nicht...

weiß jemand wies geht? ;-)

edit: also die Konfiguration ist ja kein "echtes" TypoScript, sondern hat nur eine ähnliche Syntax - also wird es auf diesem Weg nicht funktionieren...

hat jemand eine andere Idee?

Tobi

cyberfloh ·

Hallo Leute,

wie kann ich denn die größer des Eingabefeldes beeinflussen ? Früher war das ja "input,40"

Aber jetzt hab ich keinen Plan mehr wie das bei dem aktuelle Form geht:

10 = TEXTLINE
10 {
name = Nachname
label {
value = Name
}

Hat jemand eine Idee ??

Thanx

klodeckl ·

Also ich finde in diesem Thread geht es genau um die Themen, die man doch allgemein immer wieder braucht (Bestätigungsmail an Sender, Successnachricht, deswegen habe ich früher immer Powermail eingesetzt). In der Doku findet man aber z. B. nicht einmal das Wort Postprocessor oder andere Themen, die hier besprochen wurden. Ich finde das sollte alles mal in der Doku beschrieben werden, damit man nicht aufgeschmissen ist, wenn man mal kein Deutsch kann und nicht ewig Zeit hat, sich Infos durch googlen und Foren durchsuchen zu holen. Auch die detaillierte FE-Ausgabeanpassung ist nicht beschrieben, dazu gibt es bei Forge nochmal was, was ich mal angelegt habe (http://forge.typo3.org/issues/42500). Da muss ich Georg Ringer mit seiner Doku für die neue News-Erweiterung echt loben, toll gemacht bis jetzt!

BiB ·

hi allesamt,

bin mit dem Form sehr zufrieden, jedoch will eine Sache partou nicht funktionieren.

Eine Kopie der Email soll als CC an die eingegebene Emailadresse gesendet werden:

postprocessor{
  reciplientmail = empaenger@empfaenger.de
  ccEmail = email
}
...
50 = TEXTLINE
50 {
    name = email
    label {
        value = E-Mail
    }
}

leider funktionierts so wie oben beschrieben nicht, wird hingegen die Emailadresse bei ccEmail fix eingetragen, funktionierts. Vermute, dass entweder die Variable nicht ausgelesen wird oder nen Sicherheitsmechanismus greift.

Jemand ne Idee?

gruß Andreas