Contao-Camp 2024
Ergebnis 1 bis 6 von 6

Thema: Template: member_default .... $this->fields

  1. #1
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard Template: member_default .... $this->fields

    Hallo,

    im Registrierungsformular werden die Felder leider nur per $this->fields ausgegeben, wo kann ich denn den Inhalt von
    $this->fields schon vor der Ausgabe anpassen?

    Ein suchen und ersetzen in der Ausgabe wäre zu mühsam - ich müsste direkt beim "Sammeln" der Felder im Modul eingreifen.


    Danke


    Mark

  2. #2
    Contao-Nutzer Avatar von Diana
    Registriert seit
    30.10.2009.
    Ort
    Karlsruhe
    Beiträge
    52
    Partner-ID
    11708

    Standard Das suche ich auch

    Hi Mark,
    hast du für dieses Problem eine Lösung gefunden?
    Genau das brauch ich auch. Deswegen die Erweiterung xtmembers zu installieren scheint mir übertrieben.
    Was ich eigentlich will, ist: die Eingabefelder mit Zwischenüberschriften zu gliedern.
    Also z.B.
    <h3>Adresse</h3>
    Straße, Ort...
    <h3>Kontaktdaten</h3>
    Telefonnr, E-Mail,...

    Kann man $this->fields nicht irgendwie aufdröseln in $this->field->city, oder so?

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

    Standard

    Zitat Zitat von Diana Beitrag anzeigen
    Hi Mark,
    hast du für dieses Problem eine Lösung gefunden?
    Genau das brauch ich auch. Deswegen die Erweiterung xtmembers zu installieren scheint mir übertrieben.
    Was ich eigentlich will, ist: die Eingabefelder mit Zwischenüberschriften zu gliedern.
    Also z.B.
    <h3>Adresse</h3>
    Straße, Ort...
    <h3>Kontaktdaten</h3>
    Telefonnr, E-Mail,...

    Kann man $this->fields nicht irgendwie aufdröseln in $this->field->city, oder so?
    Das bekommst du mit dem Formulartemplate member_grouped. Wenn die Default Gruppierung für deine Zwecke nicht geeignet ist, musst du das DCA für die entsprechenden Felder ändern, bspw.:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['username']['eval']['group'] = '…'
    Wenn du eine eigene Gruppe definierst, die zB "foo" heißt, dann legst du so die Übersetzung der legend dafür fest:
    PHP-Code:
    $GLOBALS['TL_LANG']['tl_member']['fooDetails'] = '…'

  4. #4
    Contao-Nutzer
    Registriert seit
    15.03.2010.
    Ort
    AT
    Beiträge
    204

    Standard member_default anpassen - Felder einzeln ansprechen

    Hier meine eigene Lösung.
    Mir war aber wichtig, das ich jedes Feld direkt ansprechen, und durch Bootstrap beliebig positionieren kann.

    <?= $this->fields ?> brauch ich dabei nicht, da Contao die einzelnen Felder über $this->categories liefert (multidimensionales array, deshalb die 2 foreach..).

    PHP-Code:

    <!-- File: member_default.html5 -->

    <!-- Den Inhalt der .fields Klasse ändern -->

    <div class="fields">
          <?php

            $fieldsArray 
    = array();

            foreach (
    $this->categories as $key => $value) { 
              if (!empty(
    $value)) {
                foreach(
    $value as $key2 => $field)
                {
                  
    $fieldsArray[$key2] = $field
                } 
              }
            }  
          
    ?>

          <div class="row">
            <div class="col-md-3 col-sm-6">
              <?php echo $fieldsArray['gender']; ?>
            </div>
            <div class="col-md-3 col-sm-6">
              <?php echo $fieldsArray['firstname']; ?>
            </div>
            <div class="col-md-3 col-sm-6">
              <?php echo $fieldsArray['lastname']; ?>
            </div>
            <div class="col-md-3 col-sm-6">
              <?php echo $fieldsArray['dateOfBirth']; ?>
            </div>
          </div>

          <div class="row">
            <div class="col-md-3 col-sm-6">
              <?php echo $fieldsArray['country']; ?>
            </div>
            <div class="col-md-3 col-sm-6">
              <?php echo $fieldsArray['state']; ?>
            </div>
            <div class="col-md-3 col-sm-6">
              <?php echo $fieldsArray['postal']; ?>
            </div>
            <div class="col-md-3 col-sm-6">
              <?php echo $fieldsArray['county']; ?>
            </div>

             <div class="col-md-3 col-sm-6">
              <?php // Wenn aktiviert im Backend ?>
              <?php echo $fieldsArray['captcha']; ?>
            </div>
          </div>
            
    </div>
    Die Formular-Felder kannst du durch Anpassung der Templates vornehmen (form_row, form_textfield, form_...).

    Wichtig: Alle Felder die im Backend ausgewählt wurden, müssen auch im Template existieren!
    Evtl. das Label anpassen, damit es den Redakteuren klar ist:

    PHP-Code:
    languages/de/tl_module.php
    $GLOBALS
    ['TL_DCA']['tl_module']['fields']['editable']['label'][0] = "Notwendige auswählen! - ACHTUNG - Editierbare Felder werden direkt im Template eingefügt."
    lg
    Geändert von heyho (28.11.2023 um 10:11 Uhr)

  5. #5
    Contao-Fan
    Registriert seit
    02.08.2009.
    Ort
    Westfalen
    Beiträge
    639

    Frage

    Hey ho hey ho :-),

    danke für das Template.
    Das geht genau in die Richtung, in welche ich auch geschaut habe.
    Aktuell macht er aus "<?php echo $fieldsArray['firstname']; ?>" noch das ganze Widget-div mit viel klim-bim drumherum.
    Das heißt auch, ich kann dem div oder dem input.text keine Klassen mitgeben.

    Kann ich "<?php echo $fieldsArray['firstname']; ?>" noch weiter zerlegen, sodass ich am Ende wirklich nur noch "Vorname" (z. B. "Peter") ausgegeben bekomme?

    Danke & Grüße
    Alexander
    ‎"The basic drives of humans are few: to get enough food, to find shelter, and to keep debt off the balance sheet."

  6. #6
    Contao-Nutzer
    Registriert seit
    15.03.2010.
    Ort
    AT
    Beiträge
    204

    Standard

    Das ganze "klim-bim" kommt ja von den Templates. Ich denk dort müsstest du anfangen aufzuräumen.
    Aber ich denke, dass hier einiges vom "klim-bim" auch wichtig ist für die Verarbeitung der Felder. Auch die Error-Ausgabe solltest du nicht vergessen.

    Mit dieser Methode wird ja sowieso jedes Feld einzeln angesprochen. Als kannst du ja auch die Klassen schon vorher festlegen:

    PHP-Code:

     <div class="col-md-3 col-sm-6 lastname"> 
              <?php echo $fieldsArray['lastname']; ?> 
    </div> 
    <div class="col-md-3 col-sm-6 gebDat"> 
              <?php echo $fieldsArray['dateOfBirth']; ?> 
    </div>
    Wenn es dir darum geht, Klassen für ein CssFramework hinzuzufügen, musstest du das auch bei den verschiedenen Templates machen.
    Ähnlich wie hier: https://github.com/hh-com/creativeco...emplates/forms

    lg

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
  •