Dieser Artikel ist über 1 Jahr alt. Deshalb könnten die Informationen hier veraltet sein.

11. Oktober 2012

TYPO3-Tutorial 2012-24 – Ein einfaches Mailformular mit form

Geschätzte Lesezeit: 25 Sekunden

TYPO3 hat schon seit langem ein integrierte Möglichkeit, einfach Mailformulare zu erzeugen. Nur war bis vor einer Weile das Ganze nicht sehr komfortabel. Inzwsichen gibt es aber eine relativ komfortable Möglichkeit, Mail-Formulare zu erstellen, die sogar eine Validierung der Eingabefelder zulässt. Dazu verwendet man die bei TYPO3 mitgelieferte Extension „form“.

Für relativ einfache Formulare reicht diese im Prinzip aus, sodaß man unter Umständen ohne weitere Extension wie Powermail oder Formhandler auskommen kann.

Im folgenden Video zeige ich, wie ihr ein einfaches Kontaktformular mit „form“ erstellen könnt.

Alles bisher erschienenen Screencasts gibt es hier zum Download.

Artikel wurde gefunden mit den Suchbegriffen:
  • kontaktforumalr typo3 4 7 funktioniert nicht

Kommentare

Kommentare

Wolfgang Wagner

lebt in Friedrichshafen und arbeitet als Web Developer bei der TYPO3 Agentur jweiland.net in Filderstadt. Weitere Orte im Web: Twitter, Facebook, Snapchat

Kommentare (41) Schreibe einen Kommentar

  1. Hallo,

    ich verwende TYPO3 4.5.17 und wenn ich im Erweiterungsmanager nach FORM suche, kommen zwar viele Ergebnisse, aber die Extension Form 4.7.4 wird mir leider nicht angezeigt!

    Wie bekomme ich diese extension installiert?

    Danke

    Antworten

  2. Zum Thema Form 4.7.4 bei Typo3 4.7.5 habe ich folgendes festgestellt.
    Form ist eingedeutscht (Sprachpaket)
    Leider kommt go back to the form bzw. confirm anstatt alles in deutsch. Was mache ich falsch?

    Danke für die Info.

    PK

    Antworten

      • Eventuell die Lösung:

        Im Root Template unter Setup folgendes eintragen …

        sys_language_uid = 0
        language = de
        locale_all = de_DE
        locale_all = de_DE.UTF8
        xhtml_cleaning = all
        htmlTag_langKey = de-DE
        }
        xml:lang=“de“ lang=“de“

        Antworten

  3. Jo habs auch grad selbst gefunden…

    config.language = de
    config.locale_all = de_DE

    das war bei mir noch auskommentiert, wegen einer vorgesehenen mehrsprachigen Konfiguration.

    Funktioniert jetzt super!

    LG Tobi

    Antworten

  4. Hallo…

    ich habe das Formular komplett aufgebaut und nun fällt mir auf, dass keinerlei Validierung für Telefonnummern enthalten ist … mach ich das nun über Regex oder gibts dazu ein Addon oder so??

    Antworten

  5. Super Tutorial! … aber wie mache ich es, dass das Formular nach dem Absenden auf eine Danke-Seite weiterleitet?

    Antworten

    • Benutze Powermail. Da kannst du eine Dankesseite einbauen.
      Wenn du dazu Fragen hast … her damit.
      Dir wird geholfen 🙂

      PK

      Antworten

      • Läuft Powermail denn auch auf Typo3 6.0.0 korrekt?

        Wenn ich Powermail installiere, erhalte ich die Meldung unter Power Mail Function Check

        „TYPO3 Version

        Please check the TYPO3 version – maybe Powermail works not properly in this version“

        Antworten

        • Habe es (noch!) nicht getestet. Kann aber sein, dass PM einfach noch nicht „offiziell“ für die 6.0 frei gegeben ist. Versuche es einfach, du siehst ja dann, ob es funktioniert oder nicht.

          Antworten

          • Supi, es klappt, obwohl diese Meldung angezeigt wird.Und die Danke Seite ist somit auch ganz easy!
            Danke euch!

  6. Hallo,
    ich versuche im Nachrichtenfeld bei mehrzeiligen Nachrichten die zu entfernen.
    Klappt aber leider nicht und in der Doku finde ich auch nichts passendes.

    Antworten

  7. Habe ein Problem mit diesem Kontaktformular und zwar, wenn man Großbuchstaben in das E-Mail-Feld eingibt (wo die Gültigkeitsprüfung aktiviert ist), erhält man eine Meldung, dass man eine gültige E-Mail Adresse eingeben muss.

    Was kann ich da machen ??

    Antworten

      • Erstmal danke für die Antwort, aber es ist doch komisch einem Kunden zu sagne, dass er bitte die E-Mail-Adresse immer Kleingeschrieben eintragen muss. Ich selbst mach das ja nicht :D…

        Ich habe aber gelesen, dass man einen Filter setzen kann, dieser nennt sich „lowercase“. Wenn ich diesen Filter jedoch setze, ist die Seite mit dem Kontaktformular down.

        so sieht das Ganzen dann in der Voransicht aus:
        70 = TEXTLINE
        70 {
        name = email
        filters {
        1 = lowercase
        1 {
        }

        }
        label {
        value = E-Mail*:
        }

        ich glaube in dem oben fett markiertem Bereich fehlt etwas ? Könnte man das nicht irgendwie über die Filter regeln ? Kannst du damit etwas anfangen?
        Ich bin leider ein Neuling auf diesem Gebiet und kann auch nicht so viel mit dem ganzen Typo3 kram anfangen :-/

        Antworten

          • Wenn man das 1 {} einfach weglässt geht der filter, jedoch hilft einem das nicht wirklich weiter…, da die Validierung immernoch fehlschlägt.

            Ich habe es bei mir nun so gelöst das ich die Email.php die für den validation check verantwortlich ist einfach geändert habe.

            (Die Datei gibt es unter typo3/sysext/form/Classes/System/Validate )
            Dort habe ich einfach in nach Zeile 52 das folgende eingefügt:

            $value = strtolower($value);

            Dadurch wird die Adresse vor dem prüfen einfach in lowerCase überführt.

            Grüße

  8. Einfacher Spamschutz ohne Captcha!

    Wie funktioniert der Spamschutz?

    Spamschutzfeld 1 heißt email
    Spamschutzfeld 2 heißt e-mail
    Spamschutzfeld 3 heißt tel

    Spambots versuchen in 99% aller Fälle alle Felder auszufüllen und lesen die Feldbezeichnungen aus und versuchen anhand der gewonnen Informationen die korrekten Werte auszufüllen.

    In Spamschutzfeld 1,2,3 müssen exakt die selben Daten ausgefüllt werden. Liest ein Spambot die Feldbezeichnungen aus, so versucht der Spambot E-Mailadressen in Spamschutzfeld 1+2 zu hinterlegen sowie eine Telefonnummer oder irgendetwas anderes in Spamschutzfeld 3.
    User sehen die versteckten Felder Spamschutzfeld 1,2 und 3 nicht und füllen diese logischerweise nicht aus.

    Möchte man die Logik nachvollziehen ändert man einfach HIDDEN in TEXTLINE.
    Möchte man nicht, dass in der versendeten E-Mail der Text “Spamfeld 1:”, “Spamfeld 2:” und “Spamfeld 3” auftaucht, so entfernt man einfach folgendes:

    label {
    value = Spamschutz 1:
    }

    Das wiederholt man logischerweise mit Spamschutz 2 und 3.


    enctype = multipart/form-data
    method = post
    prefix = tx_form
    confirmation = 1
    postProcessor {
    1 = mail
    1 {
    recipientEmail = DeineEmailAdresse@domain.org
    senderEmailField = eadresse
    subject = Kontaktanfrage
    messages {
    success = Vielen Dank für Ihre Anfrage! Wir werden uns umgehend mit Ihnen in Verbindung setzen.
    error = Es ist ein Fehler aufgetreten. Bitte wenden Sie sich an den webmaster.
    }
    }
    }
    10 = SELECT
    10 {
    name = select
    label {
    value = Bitte auswählen:
    }
    10 = OPTION
    10 {
    data = Bitte auswählen
    selected = selected
    }
    20 = OPTION
    20 {
    data = Frau
    }
    30 = OPTION
    30 {
    data = Herr
    }
    }
    20 = TEXTLINE
    20 {
    name = lastname
    label {
    value = Nachname:
    }
    }
    30 = TEXTLINE
    30 {
    name = firstname
    label {
    value = Vorname:
    }
    }
    40 = TEXTLINE
    40 {
    name = street
    label {
    value = Straße:
    }
    }
    50 = TEXTLINE
    50 {
    name = city
    label {
    value = PLZ Ort:
    }
    }
    60 = TEXTLINE
    60 {
    name = telefon
    label {
    value = Telefon:
    }
    }
    70 = TEXTLINE
    70 {
    name = eadresse
    label {
    value = E-Mail:*
    }
    }
    80 = HIDDEN
    80 {
    name = email
    label {
    value = Spamschutz 1:
    }
    }
    90 = HIDDEN
    90 {
    name = e-mail
    label {
    value = Spamschutz 2:
    }
    }
    100 = HIDDEN
    100 {
    name = tel
    label {
    value = Spamschutz 3:
    }
    }
    110 = TEXTAREA
    110 {
    cols = 40
    rows = 5
    name = message
    label {
    value = Ihre Nachricht:
    }
    }
    120 = SUBMIT
    120 {
    name = 7
    value = abschicken
    }
    rules {
    1 = required
    1 {
    breakOnError = 0
    showMessage = 1
    message = Benötigt
    error = Bitte geben Sie Ihren Nachnamen ein.
    element = lastname
    }
    2 = email
    2 {
    breakOnError = 0
    showMessage = 1
    message = Benötigt
    error = Dies ist keine gültige E-Mail-Adresse
    element = eadresse
    }
    3 = equals
    3 {
    breakOnError = 0
    showMessage = 1
    message = Dieses Feld muss mit '%field' übereinstimmen
    error = Der Wert stimmt nicht mit dem Wert des Feldes "%field" überein
    field = e-mail
    element = email
    }
    4 = equals
    4 {
    breakOnError = 0
    showMessage = 1
    message = Dieses Feld muss mit '%field' übereinstimmen
    error = Der Wert stimmt nicht mit dem Wert des Feldes "%field" überein
    field = tel
    element = e-mail
    }
    5 = required
    5 {
    breakOnError = 0
    showMessage = 1
    message = Benötigt
    error = Dies ist ein Pflichtfeld
    element = message
    }
    }

    Antworten

  9. Bitte beachtet dabei die Feldbezeichnungen für die einzelnen Formularfelder für Spambots e-mail, mail oder email zu bezeichnen und das für User sichtbare total anders wie im Beispiel: eadresse.

    Wenn Dir dieses Beispiel gefällt, würde ich mich über ein Videotutorial von Dir zu diesem Spamschutzbeispiel sehr freuen, damit möglichst viele Webworker eine Capcha freie Lösung benutzen. Ich würde gerne dieses Beispiel noch erschweren, aber mir ist noch noch nichts besseres eingefallen mit den Funktionen die zur Zeit zur Verfügung stehen. Ich würde gerne ein hidden Feld vorbelegen mit einem bestimmten chinesischen Zeichen, wenn das entfernt wird oder überschrieben wird, dann sollte man das Formular nicht abschicken können. Ich würde mich über weitere Spamschutz-Beispiele mit den vorhandenen Typo3 form conditions Dir/Euch freuen. (Oder ist das eine Aufgabe für das Forum?
    Ich wollte mich registrieren, aber mein Passwort war zu schwach und zack hatte ich das Problem, dass ich als Spammer mich nicht registrieren konnte.)

    Antworten

    • Warum machst du nicht selber ein Tutorial daraus? Muss ja nicht als Video sein, Textform ist doch auch ok. Und dann vielleicht als Gastartikel hier im Blog 😉

      Wegen dem Forum: versuche es einfach mal mit einem anderen Usernamen.

      Antworten

  10. Gibts eine Möglichkeit die prefix komplett zu entfernen. Ich möchte das Formular an ein eigenes PHP übergeben und an dieser Stelle möchte die Prefix bei den <form name=" nicht drin haben.

    Antworten

  11. Wenn Du die aktuellste Typo3 Version (ab Typo3 V.4.6) hast, dann kannst Du es vergessen. PHP wurde komplett gesperrt. Möglichkeiten nur über eine Extension Programmierung. Vorher gab es ein paar dirty Tricks mit denen es funktioniert hat. Den namen des Formulars kannst Du aber meines Erachtens anpassen. prefix = tx_form umbennenen in bspw. prefix = tx_kontaktformular. Prefix komplett entfernen nicht möglich.

    Antworten

  12. Funktioniert super, danke! Eine Frage aber: Wie kann man denn das Standard-CSS überschreiben? Die Form.css-Datei wird immer direkt vor body eingebunden, und meine eigenen CSS sind logischerweise immer davor.

    Wenn ich also was überschreiben will, z.B. die Nummerierung, die Farben, etc., dann geht das nur mit !important. Unsauber… Bin übrigens auf 4.7.8.

    Antworten

    • Ab TYPO3 6.0 unterstützt form auch die CSS_DEFAULT_STYLES von TYPO3, hier kann man also z.B. die Einbindung der mitgelieferten Styles auch komplett abschalten und nur eigene verwenden.

      Bei 4.7.8 geht das aber noch nicht, hier wird es ohne !important wahrscheinlich nicht gehen.

      Antworten

  13. Juten Tach,
    ich habe so ein Kontaktformular auf einer Seite integriert wo es noch mehr Inhaltselemente gibt.
    Ist es irgendwie möglich bei der Benachrichtigung „Vielen Dank für Ihre Nachricht blabla“ auf eine seperate Seite umzuleiten und dort diese Meldung auszugeben?

    Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.