Contao-Camp 2024
Ergebnis 1 bis 17 von 17

Thema: tl_member.php - Mitglieder zusätzliche Felder hinzufügen scheitert bei Darstellung

  1. #1
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    Frage tl_member.php - Mitglieder zusätzliche Felder hinzufügen scheitert bei Darstellung

    Hallo
    Problembeschreibung:
    Über /contao/dca/tl_member.php kann ich zusätzliche Felder in die Datenbank schreiben und im Backend auch anzeigen, aber nicht richtig beschreiben.
    Der Fehler verbirgt sich möglicherweise in der PHP-Anweisung in meiner tl_member.php:
    PHP-Code:
    // Neue Datenbankfelder einreihen im Backend nach dem Feld 'gender'
    // customer_number_my,customer_start_my,customer_stop_my,customer_memo_my',
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
    (
        
    'gender',
        
    'gender,customer_number_my,customer_start_my,customer_stop_my,customer_memo_my',
        
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default']
    ); 
    Im Backend werden (nach Prod.-Cache erneuern) im Abschnitt Personendaten nun korrekt angezeigt:
    Vorname, Nachname, Geburtsdatum, Geschlecht, customber_number_my, customer_start_my, customer_stop_my, customer_memo_my.
    In folgenden Feldern ist KEINE Dateneingabe mehr möglich:
    Vorname, Nachname, Geburtsdatum, Geschlecht, customer_start_my, customer_stop_my.
    In folgenden Feldern IST eine Dateneingabemöglich:
    customber_number_my, customer_memo_my.

    Was mich wundert:
    Die Dateneingabe im Abschnitt Adressdaten in allen anderen Feldern Firma, Strasse etc. funktioniert einwandfrei

    Was habe ich getan?
    [1] Per FTP die Datei tl_member.php ins Verzeichnis /contao/dca/ hochgeladen
    (Neue Verzeichnisstruktur ab 4.8 https://contao-academy.de/blog/conta...und-langconfig)
    [2] über www.meine-url/contao-manager.phar.php/ den Prod.-Cache erneuert
    [3] über www.meine-url/contao/install die Datenbank aktualisiert

    Im Anhang befindet sich meine tl_member.php als txt-Datei tl_member.php.20200427-1303.txt
    sowie ein Screenshot vom Backend > Mitglieder 27-04-_2020_13-09-40.png

    Danke für Hinweise - ich weiss nicht mehr weiter.
    Gruss von Marcel aus Basel
    Geändert von merlincom (27.04.2020 um 13:15 Uhr)

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

    Standard

    Um Paletten zu ändern solltest du den PaletteManipulator benutzen, nicht str_replace.

  3. #3
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Um Paletten zu ändern solltest du den PaletteManipulator benutzen, nicht str_replace.
    Hallo Spooky
    Danke für den Link. Mit PaletteManipulator hat es bei mir mit 4.8 (vorerst) noch nicht funktioniert. Muss ich PaletteManipulator erst installieren? Ich sehe kein Verzeichnis Contao\CoreBundle\DataContainer\PaletteManipulator auf dem Webserver und auch nicht als Paket zum installieren.

    So funktionieren die Datenbankfelder schon mal (mit str_replace):
    PHP-Code:
    // Neue Datenbankfelder einreihen im Backend nach dem Feld 'gender'
    // 'customer_number_my,customer_start_my,customer_stop_my,customer_memo_my',
    // Hilfe: https://docs.contao.org/dev/framework/dca/palettemanipulator/
    // contao/dca/tl_member.php

    // appending custom_field to the palette
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] .= ';{Mitgliedernummer},customer_number_my';
    // using str_replace() to insert the field after the "gender"
    str_replace('gender''gender,customer_number_my'$GLOBALS['TL_DCA']['tl_member']['palettes']['default']);


    // appending custom_field to the palette
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] .= ';{Eintritt},customer_start_my';
    // using str_replace() to insert the field after the "customer_number_my"
    str_replace('customer_number_my''customer_number_my,customer_start_my'$GLOBALS['TL_DCA']['tl_member']['palettes']['default']);

    // appending custom_field to the palette
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] .= ';{Austritt},customer_stop_my';
    // using str_replace() to insert the field after the "customer_start_my"
    str_replace('customer_start_my''customer_start_my,customer_stop_my'$GLOBALS['TL_DCA']['tl_member']['palettes']['default']);

    // appending custom_field to the palette
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] .= ';{Notiz},customer_memo_my';
    // using str_replace() to insert the field after the "customer_stop_my"
    str_replace('customer_stop_my''customer_stop_my,customer_memo_my'$GLOBALS['TL_DCA']['tl_member']['palettes']['default']); 
    Die Felder tauchen jedoch im Backend erst am Ende - und nicht nach dem Feld 'gender' auf. 27-04-_2020_15-20-47.png


    Was nicht funktioniert, alle Felder in einem Rutsch in $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] schreiben wie bsp.:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] .= ';{Mitgliederdaten},customer_number_my,customer_start_my,customer_stop_my,customer_memo_my';
    // using str_replace() to insert the field after the "gender"
    str_replace('gender''gender,customer_number_my,customer_start_my,customer_stop_my,customer_memo_my'$GLOBALS['TL_DCA']['tl_member']['palettes']['default']); 
    Die Felder tauchen zwar nun in einem gemeinsamem Ausklappmenü Mitgliederdaten auf, aber die Dateneingabe in customer_start_my und customer_stop_my funktionieren nicht mehr.

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

    Standard

    Zitat Zitat von merlincom Beitrag anzeigen
    Hallo Spooky
    Danke für den Link. Mit PaletteManipulator hat es bei mir mit 4.8 (vorerst) noch nicht funktioniert. Muss ich PaletteManipulator erst installieren?
    Der PaletteManipulator ist ab Contao 4.4 verfügbar.


    Zitat Zitat von merlincom Beitrag anzeigen
    Ich sehe kein Verzeichnis Contao\CoreBundle\DataContainer\PaletteManipulator auf dem Webserver und auch nicht als Paket zum installieren.
    Das ist kein Verzeichnis, sondern ein FQCN (Fully Qualified Class Name).

  5. #5
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    Standard Mit PaletteManipulator die Installation zerschossen

    Zitat Zitat von Spooky Beitrag anzeigen
    Der PaletteManipulator ist ein FQCN (Fully Qualified Class Name).
    Ich hab grad das Problem, dass ich mir dem Code unter https://docs.contao.org/dev/framewor...temanipulator/ > Another method is by using the PaletteManipulator die Installation zerschossen habe. Ich erhalte nach der Cache-Aktualiserung nur noch die Fehlermeldung:

    ERROR 500 Malformed UTF-8 characters, possibly incorrectly encoded

    ... und nichts geht mehr. Auch die tl_member löschen hilft nicht.

    Frage: Soll/muss die tl_member im UTF8-Format oder in ANSI 1252 gespeichert werden?
    Geändert von merlincom (27.04.2020 um 17:37 Uhr)

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

    Standard

    UTF-8 ohne BOM. Poste mal den Inhalt der gesamten Datei.

  7. #7
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    UTF-8 ohne BOM. Poste mal den Inhalt der gesamten Datei.
    PHP-Code:
    <?

    // /contao/dca/tl_member.php

    // contao/dca/tl_member.php
    // Neues Feld anlegen. Referenz: https://docs.contao.org/dev/reference/dca/fields/

    $GLOBALS['TL_DCA']['fields']['tl_member'] = [
        'custom_field' => [
            'label' => &$GLOBALS['TL_LANG']['tl_example']['custom_field'],
            'exclude' => true,
            'inputType' => 'text',
            'eval' => ['tl_class'=>'w50', 'maxlength'=>255],
            'sql' => "varchar(255) NOT NULL default ''",
        ]
    ];


    // contao/dca/tl_member.php
    // Referenz: https://docs.contao.org/dev/framework/dca/palettemanipulator/
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    PaletteManipulator::create()
        // apply the field "custom_field" after the field "gender"
        ->addField('custom_field', 'gender')

        // now the field is registered in the PaletteManipulator
        // but it still has to be registered in the globals array:
        ->applyToPalette('personal', 'tl_member') 
    ;
    Die Zeile ->applyToPalette('personal', 'tl_member') dürfte wohl falsch sein. Wie aber lautet sie korrekt? In Contao3 waren die vordefinierten Gruppen für die Mitgliederverwaltung:
    personal, adress, contact, login, profile
    Geändert von merlincom (27.04.2020 um 18:02 Uhr)

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

    Standard

    use Statements stehen in PHP immer ganz am Anfang der PHP Datei (siehe zB auch https://www.php.net/manual/en/langua....importing.php).

  9. #9
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    use Statements stehen in PHP immer ganz am Anfang der PHP Datei (siehe zB auch https://www.php.net/manual/en/langua....importing.php).
    Code:
    In PaletteManipulator.php line 116:
                                                             
      Palette "custom_field" not found in table "tl_member"
    Welche Paletten gibt es denn in der table "tl_member"? Wo kann ich das nachlesen?

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

    Standard

    Das siehst du direkt in der Originaldatei: https://github.com/contao/contao/blo...member.php#L99

    Es gibt nur die Palette default, sonst keine.

  11. #11
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    HTML PaletteManipulator funktioniert

    [QUOTE=Spooky;524297]Das siehst du direkt in der Originaldatei: https://github.com/contao/contao/blo...member.php#L99
    Danke für deine grosse Hilfe. Jetzt hat es geklappt
    PHP-Code:
    PaletteManipulator::create()
        
    // apply the field "custom_field" after the field "gender"
        
    ->addField('custom_field''gender')

        
    // now the field is registered in the PaletteManipulator
        // but it still has to be registered in the globals array:
        // https://github.com/contao/contao/blob/c9e195891d08bdb26504c394775cf956f23bf719/core-bundle/src/Resources/contao/dca/tl_member.php#L99
        
    ->applyToPalette('default''tl_member'

    Was nicht funktioniert hat, ist nach Anleitung https://docs.contao.org/dev/reference/dca/fields/ eine neues Datenbankfeld anzulegen:
    PHP-Code:
    $GLOBALS['TL_DCA']['fields']['tl_member'] = [
        
    'custom_field' => [
            
    'label' => &$GLOBALS['TL_LANG']['tl_member']['custom_field'],
            
    'exclude' => true,
            
    'inputType' => 'text',
            
    'eval' => ['tl_class'=>'w50''maxlength'=>128],
            
    'sql' => "varchar(128) NOT NULL default ''",
        ]
    ]; 
    Ich verwende deshalb wie bisher:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['custom_field'] = array
    (
        
    'label'    => &$GLOBALS['TL_LANG']['tl_member']['custom_field'],
        
    'exclude'    => true,
        
    'inputType'    => 'text',
        
    'eval'        => array('mandatory'=>false'rgxp'=>'text''maxlength'=>128'placeholder'=>'Zusätzliches Feld''feEditable'=>true'feViewable'=>true'feGroup'=>'personal''tl_class'=>'w50'),
        
    'sql'        => "varchar(128) NOT NULL"
    ); 
    Mir ist aufgefallen, dass in der ersten Anweisung [tl_member] an einer anderen Stelle steht als im der funktionierenden zweiten Anweisung.

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

    Standard

    Habe ich in der Doku nun gefixt

  13. #13
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    Fehler Problem mit mehreren Datumsfeldern

    Die zusätzlichen Datumsfelder schaffen erneut das Problem, dass einige Mitgliederfelder nicht mehr funktionieren.

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['mitglied_start_my'] = [
        
    //'label'    => &$GLOBALS['TL_LANG']['tl_member']['mitglied_start_my'],
        
    'exclude'    => true,
        
    'inputType'    => 'text',
        
    'eval'        => ['rgxp'=>'date''datepicker'=>true'feEditable'=>true'feViewable'=>true'feGroup'=>'personal''tl_class'=>'w50 wizard'],    
        
    'sql'        => "varchar(11) NOT NULL"
    ];

    $GLOBALS['TL_DCA']['tl_member']['fields']['mitglied_stop_my'] = [
        
    //'label'    => &$GLOBALS['TL_LANG']['tl_member']['mitglied_stop_my'],
        
    'exclude'    => true,
        
    'inputType'    => 'text',
        
    'eval'        => ['rgxp'=>'date''datepicker'=>true'feEditable'=>true'feViewable'=>true'feGroup'=>'personal''tl_class'=>'w50 wizard'],
        
    'sql'        => "varchar(11) NOT NULL"
    ];


    PaletteManipulator::create()
        
    // apply the field "privat_email_my" after the field "gender" etc, etc ...
        
    ->addField('mitglied_memo_my''gender')
        ->
    addField('mitglied_stop_my''gender')
        ->
    addField('mitglied_start_my''gender')
        ->
    addField('mitglied_number_my''gender')
        ->
    addField('privat_email_my''gender')
        
        
    // now the field is registered in the PaletteManipulator
        // but it still has to be registered in the globals array:
        // https://github.com/contao/contao/blob/c9e195891d08bdb26504c394775cf956f23bf719/core-bundle/src/Resources/contao/dca/tl_member.php#L99
        
    ->applyToPalette('default''tl_member'
    Der HTML-Code sieht wie folgt aus:
    HTML-Code:
    <fieldset id="pal_personal_legend" class="tl_tbox">
    <legend onclick="AjaxRequest.toggleFieldset(this,'personal_legend','tl_member')">Personendaten</legend>
    <div class="w50 widget">
      <h3><label for="ctrl_firstname"><span class="invisible">Pflichtfeld </span>Vorname<span class="mandatory">*</span></label></h3>
      <input type="text" name="firstname" id="ctrl_firstname" class="tl_text" value="Mario" required="" maxlength="255" onfocus="Backend.getScrollOffset()">
      <p class="tl_help tl_tip" title="">Bitte geben Sie den Vornamen ein.</p>
    </div>
    <div class="w50 widget">
      <h3><label for="ctrl_lastname"><span class="invisible">Pflichtfeld </span>Nachname<span class="mandatory">*</span></label></h3>
      <input type="text" name="lastname" id="ctrl_lastname" class="tl_text" value="Borsetti" required="" maxlength="255" onfocus="Backend.getScrollOffset()">
      <p class="tl_help tl_tip" title="">Bitte geben Sie den Nachnamen ein.</p>
    </div>
    <div class="w50 wizard widget">
      <h3><label for="ctrl_dateOfBirth">Geburtsdatum</label></h3>
      <input type="text" name="dateOfBirth" id="ctrl_dateOfBirth" class="tl_text" value="1956-04-22" onfocus="Backend.getScrollOffset()"> <img src="assets/datepicker/images/icon.svg" alt="" title="" id="toggle_dateOfBirth" style="cursor:pointer" width="20" height="20">
      <script>
        window.addEvent("domready", function() {
          new Picker.Date($("ctrl_dateOfBirth"), {
            draggable: false,
            toggle: $("toggle_dateOfBirth"),
            format: "%Y-%m-%d",
            positionOffset: {x:-211,y:-209},
            pickerClass: "datepicker_bootstrap",
            useFadeInOut: !Browser.ie,
            startDay: 1,
            titleFormat: "%d. %B %Y"
          });
        });
      </script>
      <p class="tl_help tl_tip" title="">Bitte geben Sie das Geburtsdatum ein.</p>
    </div>
    <div class="w50 widget">
      <h3><label>Geschlecht</label></h3>
      <select name="gender" id="ctrl_gender" class="tl_select" onfocus="Backend.getScrollOffset()"><option value="">-</option><option value="male" selected="">Männlich</option><option value="female">Weiblich</option><option value="other">Divers</option></select>
      <p class="tl_help tl_tip" title="">Bitte wählen Sie das Geschlecht.</p>
    </div>
    <div class="w50 widget">
      <h3><label for="ctrl_privat_email_my">privat_email_my</label></h3>
      <input type="text" name="privat_email_my" id="ctrl_privat_email_my" class="tl_text" value="" maxlength="128" placeholder="E-Mail Privat" onfocus="Backend.getScrollOffset()">
    </div>
    <div class="ctr widget">
      <h3><label for="ctrl_mitglied_number_my"><span class="invisible">Pflichtfeld </span>mitglied_number_my<span class="mandatory">*</span></label></h3>
      <input type="text" name="mitglied_number_my" id="ctrl_mitglied_number_my" class="tl_text" value="0" required="" maxlength="8" placeholder="Mitgliedernummer" style="width:128px;" onfocus="Backend.getScrollOffset()">
    </div>
    <div class="w50 wizard widget">
      <h3><label for="ctrl_mitglied_start_my">mitglied_start_my</label></h3>
      <input type="text" name="mitglied_start_my" id="ctrl_mitglied_start_my" class="tl_text" value="" onfocus="Backend.getScrollOffset()"> <img src="assets/datepicker/images/icon.svg" alt="" title="" id="toggle_mitglied_start_my" style="cursor:pointer" width="20" height="20">
      <script>
        window.addEvent("domready", function() {
          new Picker.Date($("ctrl_mitglied_start_my"), {
            draggable: false,
            toggle: $("toggle_mitglied_start_my"),
            format: "%Y-%m-%d",
            positionOffset: {x:-211,y:-209},
            pickerClass: "datepicker_bootstrap",
            useFadeInOut: !Browser.ie,
            startDay: 1,
            titleFormat: "%d. %B %Y"
          });
        });
      </script>
    </div>
    <div class="w50 wizard widget">
      <h3><label for="ctrl_mitglied_stop_my">mitglied_stop_my</label></h3>
      <input type="text" name="mitglied_stop_my" id="ctrl_mitglied_stop_my" class="tl_text" value="" onfocus="Backend.getScrollOffset()"> <img src="assets/datepicker/images/icon.svg" alt="" title="" id="toggle_mitglied_stop_my" style="cursor:pointer" width="20" height="20">
      <script>
        window.addEvent("domready", function() {
          new Picker.Date($("ctrl_mitglied_stop_my"), {
            draggable: false,
            toggle: $("toggle_mitglied_stop_my"),
            format: "%Y-%m-%d",
            positionOffset: {x:-211,y:-209},
            pickerClass: "datepicker_bootstrap",
            useFadeInOut: !Browser.ie,
            startDay: 1,
            titleFormat: "%d. %B %Y"
          });
        });
      </script>
    </div>
    <div class="ctr widget">
      <h3><label for="ctrl_mitglied_memo_my">mitglied_memo_my</label> <img src="system/themes/flexible/icons/wrap.svg" alt="Zeilenumbruch" title="" class="toggleWrap" onclick="Backend.toggleWrap('ctrl_mitglied_memo_my')" width="14" height="14"></h3>
      <textarea name="mitglied_memo_my" id="ctrl_mitglied_memo_my" class="tl_textarea" rows="1" cols="1" maxlength="1023" placeholder="Bemerkungen" style="width: 100%; min-height: 64px; height: 30px;" onfocus="Backend.getScrollOffset()"></textarea>
    </div>
    </fieldset>
    Hier die Eingabemaske als Screenshot. Ich vermute, es handelt sich um eine Problem mit dem Widget Datumspicker: 27-04-_2020_19-49-11.png

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

    Standard

    Die Probleme liegen eher bei den Feldern mitglied_number_my und mitglied_memoy_my. Poste dein gesamtes DCA.

  15. #15
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Die Probleme liegen eher bei den Feldern mitglied_number_my und mitglied_memoy_my. Poste dein gesamtes DCA.
    PHP-Code:
    <?

    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    /****************************************************************************
    Contao-Erweiterung
    Zusätzliche Adressfelder für Arbeitsplatz  etc
    Veraltet: /system/modules/zusatz_member/dca/tl_member.php
    Neu ab 4.8: /contao/dca/tl_member.php

    ****************************************************************************/

    /****************************************************************************
    Anpassung der Palette
    https://contao-academy.de/blog/contao-4-dcaconfig-und-langconfig

    Unter Contao 4.8 wurden die Pfade noch einmal angepasst und die Verwendung des
    /app-Ordners funktioniert zwar noch, wird allerdings nicht mehr empfohlen.
    Die angepassten Contao-Dateien sollten nun in den Ordner /contao und nicht 
    mehr in den Ordner /app/Resources/contao abgelegt werden.
    Die neuen Pfade für unser Beispiel lauten wie folgt:
        /contao/dca/tl_content.php
        /contao/dca/tl_news.php
        /contao/dca/tl_member.php
        /contao/languages/de/default.xlf
    ****************************************************************************/

    /****************************************************************************
    Zusätzliche Datenbankfelder angelegt
    ****************************************************************************/
    // Datenbankfeld 'email_privat_my' anlegen
    // und der Gruppe 'personal' zuordnen

    $GLOBALS['TL_DCA']['tl_member']['fields']['privat_email_my'] = [
        'label'    => &$GLOBALS['TL_LANG']['tl_member']['privat_email_my'],
        'exclude'    => true,
        'inputType'    => 'text',
        'eval'        => ['mandatory'=>false, 'rgxp'=>'email', 'maxlength'=>128, 'placeholder'=>'E-Mail Privat', 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'tl_class'=>'w50'],
        'sql'        => "varchar(128) NOT NULL"
    ];

    //Datenbankfeld 'customer_number_my' anlegen
    //und der Gruppe 'personal' zuordnen

    $GLOBALS['TL_DCA']['tl_member']['fields']['mitglied_number_my'] = [
        'label'    => &$GLOBALS['TL_LANG']['tl_member']['mitglied_number_my'],
        'exclude'    => true,
        'inputType'    => 'text',
        'eval'        => ['mandatory'=>true, 'rgxp'=>'extnd', 'unique'=>true, 'maxlength'=>8, 'placeholder'=>'Mitgliedernummer', 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal ', 'tl_class'=>'ctr', 'style'=>'width:128px;'],
        'sql'        => "int(11) NOT NULL"
    ];

    /*
    * Beispiel dateOfBirth in 
    * /vendor/contao/core-bundle/src/Resources/contao/dca/tl_member.php
    * von Leo Feyer

    * 'dateOfBirth' => array
    *     (
    *    'exclude'    => true,
    *    'inputType'    => 'text',
    *    'eval'        => array('rgxp'=>'date', 'datepicker'=>true, 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'tl_class'=>'w50 wizard'),
    *    'sql'        => "varchar(11) NOT NULL default ''"
    *     ),
    */

    $GLOBALS['TL_DCA']['tl_member']['fields']['mitglied_start_my'] = [
        //'label'    => &$GLOBALS['TL_LANG']['tl_member']['mitglied_start_my'],
        'exclude'    => true,
        'inputType'    => 'text',
        'eval'        => ['rgxp'=>'date', 'datepicker'=>true, 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'tl_class'=>'w50 wizard'],    
        'sql'        => "varchar(11) NOT NULL"
    ];

    $GLOBALS['TL_DCA']['tl_member']['fields']['mitglied_stop_my'] = [
        //'label'    => &$GLOBALS['TL_LANG']['tl_member']['mitglied_stop_my'],
        'exclude'    => true,
        'inputType'    => 'text',
        'eval'        => ['rgxp'=>'date', 'datepicker'=>true, 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal', 'tl_class'=>'w50 wizard'],
        'sql'        => "varchar(11) NOT NULL"
    ];

    $GLOBALS['TL_DCA']['tl_member']['fields']['mitglied_memo_my'] = [
        'label'    => &$GLOBALS['TL_LANG']['tl_member']['mitglied_memo_my'],
        'exclude'    => true,
        'inputType'    => 'textarea',
        //Wenn 'rows' und 'cols' nicht angegeben werden, setzt Contao automatisch , rows="12", 'cols="20" ein
        //'eval'    => ['mandatory'=>false, 'rgxp'=>'extnd', 'maxlength'=>1023, 'feEditable'=>true, 'rows'=>1, 'cols'=>1, 'feViewable'=>true, 'feGroup'=>'personal ', 'decodeEntities'=>true, 'tl_class'=>'noresize', 'style'=>'height:64px;'],
        'eval'        => ['rgxp'=>'extnd', 'maxlength'=>1023, 'placeholder'=>'Bemerkungen', 'feEditable'=>true, 'rows'=>1, 'cols'=>1, 'feViewable'=>true, 'feGroup'=>'personal ', 'decodeEntities'=>true, 'tl_class'=>'ctr', 'style'=>'width:100%;min-height:64px;'],
        'sql'        => "text NOT NULL"
    ];


    // contao/dca/tl_member.php
    // Referenz: https://docs.contao.org/dev/framework/dca/palettemanipulator/
    // use Contao\CoreBundle\DataContainer\PaletteManipulator; // Immer an Anfang stellen


    PaletteManipulator::create()
        // apply the field "privat_email_my" after the field "gender" etc, etc ...
        ->addField('mitglied_memo_my', 'gender')
        ->addField('mitglied_stop_my', 'gender')
        ->addField('mitglied_start_my', 'gender')
        ->addField('mitglied_number_my', 'gender')
        ->addField('privat_email_my', 'gender')
        
        // now the field is registered in the PaletteManipulator
        // but it still has to be registered in the globals array:
        // https://github.com/contao/contao/blob/c9e195891d08bdb26504c394775cf956f23bf719/core-bundle/src/Resources/contao/dca/tl_member.php#L99
        ->applyToPalette('default', 'tl_member') 
    ;

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

    Standard

    Du hast ctr statt clr verwendet.

  17. #17
    Contao-Nutzer Avatar von merlincom
    Registriert seit
    06.07.2015.
    Ort
    Basel (CH)
    Beiträge
    243

    Lächelndes Gesicht Problem gelöst

    Zitat Zitat von Spooky Beitrag anzeigen
    Du hast ctr statt clr verwendet.
    Asche auf meine Haupt. Alles funktioniert nun einwandfrei :-)

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
  •