Ergebnis 1 bis 11 von 11

Thema: Eigenes Formularfeld liefert keine Werte

  1. #1
    Contao-Nutzer Avatar von Tiggr
    Registriert seit
    04.10.2009.
    Ort
    Bei Frankfurt am Main
    Beiträge
    238

    Standard Eigenes Formularfeld liefert keine Werte

    Hallo!

    Dank dieses Forums bin ich jetzt soweit, dass ich meine erste Erweiterung für Contao 4.x geschrieben habe.

    Ich erzeuge ein eigenes Formularfeld, das etwas komplexer aufgebaut ist. Im wesentlichen besteht es aus mehreren Feldern, die aus einer CSV-Datei erstellt werden.



    Hinter der Graphik liegen unsichtbar radio-buttons, die aktiviert werden, wenn über die Pfeile die Graphik gewechselt wird. Und die beiden Felder "Farbe #..." werden auch von meiner Erweiterung generiert.

    Eigentlich klappt auch alles wunderbar, nur leider das wichtigste klappt nicht: In der E-Mail, die aus dem Formular generiert wird, werden die Werter dieser Felder nicht übergeben. Die Mail weiß scheinbar garnicht, dass es diese Felder gibt! Doof gelaufen!

    Was muss ich nun noch ergänzen, dass die Werte auch in der Mail erscheinen?

    Ich hab schon mal einen Blick in den Code von Contao geworfen, bin aber nicht so ganz schlau geworden. :-(

    Ach ja, in der Mail darf es ruhig etwas "unschön" aussehen, der einzige, der das sieht, bin ich! :-)

    Tschüss
    Marcus (aka Tiggr)
    @bout Kites: Rodgauer Workshop (Contao 4.9)
    Colorful Sky (Typo3, auf dem Weg zu Contao)

  2. #2
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Tiggr Beitrag anzeigen
    Hallo!

    Dank dieses Forums bin ich jetzt soweit, dass ich meine erste Erweiterung für Contao 4.x geschrieben habe.

    Ich erzeuge ein eigenes Formularfeld, das etwas komplexer aufgebaut ist. Im wesentlichen besteht es aus mehreren Feldern, die aus einer CSV-Datei erstellt werden.



    Hinter der Graphik liegen unsichtbar radio-buttons, die aktiviert werden, wenn über die Pfeile die Graphik gewechselt wird. Und die beiden Felder "Farbe #..." werden auch von meiner Erweiterung generiert.

    Eigentlich klappt auch alles wunderbar, nur leider das wichtigste klappt nicht: In der E-Mail, die aus dem Formular generiert wird, werden die Werter dieser Felder nicht übergeben. Die Mail weiß scheinbar garnicht, dass es diese Felder gibt! Doof gelaufen!

    Was muss ich nun noch ergänzen, dass die Werte auch in der Mail erscheinen?

    Ich hab schon mal einen Blick in den Code von Contao geworfen, bin aber nicht so ganz schlau geworden. :-(

    Ach ja, in der Mail darf es ruhig etwas "unschön" aussehen, der einzige, der das sieht, bin ich! :-)

    Tschüss
    Marcus (aka Tiggr)
    Wie sind denn die Eingabefelder benannt?

    Wenn ich mich recht erinnere, ging es nicht so leicht in einem Eingabefeld mehrere Felder zu nutzen, die eigene Namen tragen. Ist aber länger her, dass ich Mal darüber gestolpert bin.

    Entweder alles in einem Array speichern mit dem Namen des Formularfelds oder separate Widgets draus machen.

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.160
    Partner-ID
    10107

    Standard

    Wie lässt du das Formular generieren und wie lässt du die Email verschicken?

  4. #4
    Contao-Nutzer Avatar von Tiggr
    Registriert seit
    04.10.2009.
    Ort
    Bei Frankfurt am Main
    Beiträge
    238

    Standard

    Hiho!

    Ohje, das ist doof zu beschreiben! Ich bin ja nur ein Hobbyfriggler!

    Ganz zum Anfang mal, wie es im letzten Jahr unter Contao 2.10 ausgesehen hat: http://www.rodgauer-workshop.de/work...anmeldung.html - ich nehme das wieder offline, wenn das Problem gelöst ist.

    Ich baue die Seite und damit die Anmeldung gerade komplett neu in Contao 4 auf, und erstelle deswegen auch die Erweiterung komplett neu, und versuche sie dabei auch gleich etwas flexibler für die Zukunft zu machen.

    Erstmal der Link zum neuen Formular: http://rodgau.testspace.de/register-star.html - nicht wunder, dann die Farbauswahl noch keine Wirkung zeigt. Ich hab da einfach 2 alte Graphiken reingeladen, bis ich die richtigen erstellt habe.

    Nicht zu kritisch sein, ist nur Hobby, und wenn die Seite steht, geh ich wieder an die Nähmaschine und bau einen Drachen! :-D

    Das Widget besteht im wesentlichen aus 2 Teilen.

    Die Graphikvorschau wird aus einer Liste von Bildern im Filetree erzeugt. Formularmäßig entsteht dabei im wesentlichen sowas:

    HTML-Code:
    <input type="radio" name="kite" value="1" id="kite-1">
    <input type="radio" name="kite" value="2" id="kite-2">
    Die Felder sind nur nicht sichbar, aber da!

    Und dann die Farbwahlfelder. Dafür gebe ich im Backend einfach eine CSV ein. Die hat im wesentlichen den Aufbau: "Bezeichnung;Feldname;Klasse im SVG". (Klasse im SVG brauche ich dann später, um die Farben in der Drachengraphik zu tauschen.) Aus jeder Zeile erzeuge ich dann ein Select-Field im HTML:

    HTML-Code:
    <select name="color1" id="ctrl_color1" class="form-control">
    <option value="1">Schwarz</option>
    <option value="2">Dunkelgrau</option>
    ...
    </select>
    
    <select name="color2" id="ctrl_color2" class="form-control">
    <option value="1">Schwarz</option>
    <option value="2">Dunkelgrau</option>
    ...
    </select>
    Mein erster Gedanke ist nun, dass es wahrscheinlich schon doof war, die Felder so frei zu benennen. Wahrscheinlich sollte ich doch eher Namen bilden, die auf $this->name im Widget basieren?

    Tschüss
    Marcus (aka Tiggr)
    @bout Kites: Rodgauer Workshop (Contao 4.9)
    Colorful Sky (Typo3, auf dem Weg zu Contao)

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.160
    Partner-ID
    10107

    Standard

    Das beantwortet meine Frage nicht wirklich . Du hast ein Formular, ok. Aber was passiert damit?

  6. #6
    Contao-Nutzer Avatar von Tiggr
    Registriert seit
    04.10.2009.
    Ort
    Bei Frankfurt am Main
    Beiträge
    238

    Standard

    Hiho!

    Ich weiß nicht so ganz, worauf du hinaus willst... Ich habe im Formular eingestellt, dass mir die Daten dann per Mail zugeschickt werden.



    Klappt so weit auch, ich bekomme die Eingaben schön in der Mail. Aber bei meinem Feld werden keine Daten angezeigt.

    Code:
    Colorizer:
    Nickname: Tiggr
    Name: Marcus
    E-Mail: marcus.XXXXXXXXXX.com
    ...
    Tschüss
    Marcus (aka Tiggr)
    @bout Kites: Rodgauer Workshop (Contao 4.9)
    Colorful Sky (Typo3, auf dem Weg zu Contao)

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.160
    Partner-ID
    10107

    Standard

    Achso, du hast das Formular mit dem Formulargenerator erzeugt. Und sind die Felder, wofür dann plötzlich die Daten fehlen, auch im Formulargenerator vorhanden?

  8. #8
    Contao-Nutzer Avatar von Tiggr
    Registriert seit
    04.10.2009.
    Ort
    Bei Frankfurt am Main
    Beiträge
    238

    Standard

    Genau darum geht es doch!

    Ich habe in einer Erweiterungen einen eigenen Feldtyp erstellt, der mehrere Eingabefelder beinhaltet. Und diese kommen nicht in der Mail an!

    Ich habe so langsam den Verdacht, dass Stichwort "array" aus einem der frühen Posts weißt mich in die richtige Richtung!

    Ich steige da heute Abend ein und probier mal was aus, wenn ich von Arbeit weg bin!

    Tschüss
    Marcus (aka Tiggr)
    @bout Kites: Rodgauer Workshop (Contao 4.9)
    Colorful Sky (Typo3, auf dem Weg zu Contao)

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.160
    Partner-ID
    10107

    Standard

    Zitat Zitat von Tiggr Beitrag anzeigen
    Ich habe in einer Erweiterungen einen eigenen Feldtyp erstellt, der mehrere Eingabefelder beinhaltet. Und diese kommen nicht in der Mail an!
    Dann liegt es wohl an der Umsetzung deines eigenen Feldtyps. Pro Feld kann es nur einen Wert geben und den holt sich Contao mit $objWidget->value bspw. Vermutlich ist value in deinem Widget einfach leer.

  10. #10
    Contao-Nutzer Avatar von Tiggr
    Registriert seit
    04.10.2009.
    Ort
    Bei Frankfurt am Main
    Beiträge
    238

    Standard

    Pro Feld kann es nur einen Wert geben und den holt sich Contao mit $objWidget->value bspw. Vermutlich ist value in deinem Widget einfach leer.
    Jupp, genau so ist es! :-D

    IMHO liegt das unter anderem an meiner sehr freien Benennung der Felder.

    Ich dachte nun ursprünglich, ich könnte ja das Widget so anpassen, dass es sich an den Feldern bedient, und einen String der Form "Feldname1;Value|Feldname2:Value|Feldname3;value.. ." im $objWidget->value zurück gibt. Nur ist mir absolut nicht klar, wo ich dafür eingreifen muss. Ich hatte die $objWidget->getPost($strKey) im Verdacht, das ist aber falsch, weil die bekommt ja schon die Feldbezeichnung übergeben.

    Ich glaub, ich muss die $objWidget->validate() stattdessen anpassen. Die hab ich immer nicht beachtet, weil ich dachte, die validiert ja nur. Aber am Ende füllt sie dann doch auch $objWidget->value. Ist mir aber gerade erst aufgefallen, als ich die Methodenbezeichnungen für dieses Posting raus gesucht habe! :-) Drüber reden hilft also!

    Ich muss den Quellcode aufmerksamer lesen...

    PHP-Code:
    /**
     * Validate the user input and set the value
         */
     
    public function validate() 
    Alternativ überlege ich, ob ich ausnutze, dass Contao mit Arrays umgehen kann, und ich einfach alle Felder als Array anlege. Also sowas wie

    HTML-Code:
    <input name="colorizer[]" ...>
    Das müsste auch gehen, wenn ich die Quellen im Internet richtig verstehe. Aber überladen von $objWidget->validate() gefällt mir besser! Dann kann ich auf die Formatierung Einfluss nehmen.

    Heute Abend wird es ausprobiert! Mal sehen, ob ich auf einem komplett falschen Pfad bin!
    @bout Kites: Rodgauer Workshop (Contao 4.9)
    Colorful Sky (Typo3, auf dem Weg zu Contao)

  11. #11
    Contao-Nutzer Avatar von Tiggr
    Registriert seit
    04.10.2009.
    Ort
    Bei Frankfurt am Main
    Beiträge
    238

    Standard

    Hiho!

    Jupp, das war es! Ich habe die $this->validate() angepasst, und schon kommt in der Mail auch ein Wert an:

    Code:
    Colorizer: Farbe #1 (color1): Goldgelb (7)|Farbe #2 (color2): Gelb (8)|Drachen (kite): 1
    Nickname: Tiggr
    Name: Marcus 
    E-Mail: marcus@test.com
    Telefon: 012345678
    Geburtstag: 12.12.1912
    Straße: Yellowbrick Road 12
    Postleitzahl: 77777
    Stadt: Oz
    Land: Deutschland
    Homepage:
    Nämaschine leihen: no
    Daten zeigen: yes
    Mein Code sieht jetzt so aus, wahrscheinlich unglaublich kompliziert:

    PHP-Code:
      public function validate()
          {
          
    $values = array();
          
    $fields = array();
          
    $colors = array();
          
    $val "";

          
    $lines explode("\n"$this->color_options);
          foreach (
    $lines as $line)
          {
            
    $tmp explode(";"$line);
            
    $colors[$tmp[0]] = $tmp[2];
          }

          
    $lines explode("\n"$this->field_to_class);
          
    $lines[] = "kite;;Drachen";
          foreach (
    $lines as $line)
          {
            
    $tmp explode(";"$line);
            
    $v $this->getPost($tmp[0]);
            if (
    $tmp[0] <> 'kite')
              { 
    $val $colors[$v]." (".$v.")"; }
            else
              { 
    $val $v; }
            
    $values[] = $tmp[2]." (".$tmp[0]."): ".$val;
          }

          
    $this->varValue implode("|"$values);
     } 
    Danke für die Denkanstöße, das hat mir geholfen!

    Tschüss
    Marcus (aka Tiggr)
    @bout Kites: Rodgauer Workshop (Contao 4.9)
    Colorful Sky (Typo3, auf dem Weg zu Contao)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •