Ergebnis 1 bis 5 von 5

Thema: Formular abhängig der Einbindung anpassen

  1. #1
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Frage Formular abhängig der Einbindung anpassen

    Hallo,

    ich habe die Tabelle tl_calandar_events um zwei individuelle Felder erweitert. Auch habe ich ein Select-Menu zum Einbinden von Formularen erstellt und dort eingebunden. Im Template gebe ich das Formular derzeit über einen Insert-Tag aus:
    PHP-Code:
    {{insert_form::<?= $this->form ?>}}
    Dadurch kann ich bestimmte Formulare auf der Eventseite anzeigen.
    Gerne würde ich jetzt die beiden Felder welche ich in der Tabelle tl_calandar_events hinzugefügt habe nun als Checkboxen/Felder im Formular haben.

    Ziel:
    Ein Formular und abhängig davon wo (in welchem Event) es eingebunden ist, werden unterschiedliche Felder zusätzlich mitgegeben.

    Wie könnte ich das realisieren? Gibt es eine Möglichkeit Formulare von außen zu modifizieren und neue eigene (dann auch validierbare) Felder mitzugeben bevor sie generiert werden? Es wäre schön, wenn sich das Ganze dann per Leads speichern und über das Notification Center verarbeiten lässt.

    Grüße

  2. #2
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Frage

    Es gibt ja einige Hooks die anscheinend zum manipulieren von Formularen da sind:

    z. B.:
    • compileFormFields
    • loadFormField

    Ich frage mich nur, wie ich dann die Daten aus dem spezifischen Event, in dem ich gerade stehe, der Klasse mitgeteilt bekomme, welche die Hooks aufrufen.
    Verlaufe ich mich da gerade?

  3. #3
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Standard

    Bevor das hier ohne Antwort stehen bleibt:

    Ich habe es mit dem loadFormField Hook gelöst:

    config.php
    PHP-Code:
    $GLOBALS['TL_HOOKS']['loadFormField'][] = array('ManipulateForm''CoastLoadFormField'); 
    ManipulateForm.php
    PHP-Code:
    class ManipulateForm
    {

      public function 
    CoastLoadFormField(Widget $objWidget$strForm$arrForm)
      {

        
    /* Modify the field with #id 17 in form with #id 3 */
        
    if ($arrForm['id'] == '3' && $objWidget->id == '17') {

          
    $arrOptions = array();

          
    /* individual code */

        
    }

        return 
    $objWidget;

      }


    Um die Daten aus dem Event zu verwenden habe ich diese in eine $GLOBALS['event_daten'] geschrieben und in der ManipulateForm.php wieder verwendet.
    Einwände? Vorschläge zur Optimierung?
    Geändert von ttcdummy (29.11.2018 um 08:55 Uhr)

  4. #4
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Standard

    Eines würde mich dann doch noch interessieren:

    Kann man den einzelnen Feldern irgendwie Attribute wie "selected", "disabled" usw. mitgeben?

    Derzeit schaut das bei mir so aus:

    PHP-Code:
    class ManipulateForm
    {

      public function 
    CoastLoadFormField(Widget $objWidget$strForm$arrForm)
      {

        
    /* Modify the field with #id 17 in form with #id 3 */
        
    if ($arrForm['id'] == '3' && $objWidget->id == '17') {

          
    $arrOptions = array();

          
    $arrOptions[] = array(
            
    'value' => '',
            
    'label' => '-- Bitte wählen Sie aus --'
          
    );

          foreach (
    $GLOBALS['costs'] as $cost) :
            
    $arrOptions[] = array(
              
    'value' => $cost['costs_name'].': '.$cost['costs_units'].' ('.$cost['costs_amount'].')',
              
    'label' => $cost['costs_name'].': '.$cost['costs_units'].' ('.$cost['costs_amount'].')'
            
    );
          endforeach;

          
    $objWidget->__set('options'serialize($arrOptions));

        }

        return 
    $objWidget;

      }


    Auf dem ersten Eintrag hätte ich gerne ein "selected" und ein "disabled" sodass das HTML mir ausgibt:
    HTML-Code:
    <option selected disabled value="">-- Bitte wählen Sie aus --</option>
    Hat jemand eine Idee?

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

    Standard

    "selected" macht Contao automatisch, wenn anwendbar. "disabled" kann man nicht konfigurieren: https://github.com/contao/contao/blo....php#L317-L320

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
  •