Ergebnis 1 bis 8 von 8

Thema: Neues Datenfeld hinzufügen

  1. #1
    Contao-Nutzer
    Registriert seit
    15.09.2016.
    Beiträge
    85

    Standard Neues Datenfeld hinzufügen

    Hallo,

    wollte der tl_iso_address-Tabelle ein weiteres Feld hinzufügen und habe dazu einen eigenen Ordner unter system/modules, darin den dca-ordner und eine tl_iso_address.php mit folgendem Inhalt erstellt:
    PHP-Code:
    <?php
    $GLOBALS
    ['TL_DCA']['tl_iso_address']['palettes']['default'] = str_replace(
        
    'email',
        
    'email,sdt-banner',
        
    $GLOBALS['TL_DCA']['tl_iso_address']['palettes']['default']
    );
     
    $GLOBALS['TL_DCA']['tl_iso_address']['fields']['sdt-banner'] = array
    (
        
    'label'                 => &$GLOBALS['TL_LANG']['tl_iso_address']['sdt-banner'],
        
    'exclude'               => true,
        
    'inputType'             => 'select',
        
    'options'               => array(0270,400),
        
    'reference'             => &$GLOBALS['TL_LANG']['MSC'],
        
    'sql'                   => "int NOT NULL default 0",
    );
    Wenn ich jetzt die Datenbank aktualisieren will, bekomm ich die Info, sie sei schon aktuell.

    Zum Testen habe ich eine Datei tl_member.php erstellt und dort folgendes reingeschrieben (Anleitung ausm Contao-Handbuch):
    PHP-Code:
    <?php
    // Anpassung der Palette
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
    (
        
    'company',
        
    'customer_number,company',
        
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default']
    );

    // Hinzufügen der Feld-Konfiguration
    $GLOBALS['TL_DCA']['tl_member']['fields']['customer_number'] = array
    (
        
    'label'     => &$GLOBALS['TL_LANG']['tl_member']['customer_number'],
        
    'exclude'   => true,
        
    'inputType' => 'text',
        
    'eval'      => array('mandatory'=>true'rgxp'=>'digit''maxlength'=>8),
        
    'sql'       => "varchar(8) NOT NULL default ''"
    );
    Darauhin wurde vorgeschlagen, wie auch zu erwarten, daß die DB um diese Feld aktualisiert werden sollte.

    Jetzt habe ich spaßeshalber mein neues Feld (das obere) mit in die tl_member.php geschrieben und bei der DB-Aktualisierung wurden mir nun beide Tabellen zur Aktualisierung vorgeschlagen.

    Wie ist das zu erklären? Warum wird die tl_iso_address.php scheinbar nicht gelesen, die tl_member dagegen schon?



    P.S.: habe sonst keine Verzeichnisse oder Dateien angelegt. Mein Modulordner beginnt mit "w", also alphabetisch nach "isotope".
    Geändert von Adnan (27.11.2018 um 16:15 Uhr)

  2. #2
    Contao-Nutzer
    Registriert seit
    15.09.2016.
    Beiträge
    85

    Standard

    Sorry, habs. Wenn man Erweiterungen erweitern will, muß man wohl doch eine autoload.ini haben. Und in der muß diese required werden.

  3. #3
    Contao-Nutzer
    Registriert seit
    15.09.2016.
    Beiträge
    85

    Standard

    Hmmm...nächstes Problem.

    Habe das ganze auf einem anderen Rechner nachgebaut, sprich:
    -Isotope-Demo 2.4.4 installiert
    -Modul-Ordner angelegt
    -DCA wie oben geschrieben
    -Autoload-Creator aufgerufen und requires[] = "isotope" in die ini geschrieben
    -Datenbank aktualisiert

    => neue Spalte wurde eingefügt, wie ich unter phpMyAdmin sehen kann

    ABER: Contao will immer wieder die DB aktualisieren:
    Code:
    Bestehende Spalten ändern
    Alle auswählen
    ALTER TABLE `tl_iso_address` CHANGE `sdt-banner` `sdt-banner` int NOT NULL default 0;
    Es werden keine Fehlermeldungen ausgespuckt, weder im Log noch aufm Schirm. Auch nicht wenn ich den Befehl in der phpMyAdmin-Konsole eingebe.

    ???

  4. #4
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Setze mal die "0" in Hochkommas.
    Code:
    'sql' => "int NOT NULL default '0'"
    Sollte reichen, wobei eine Feldlänge und möglicherweise "unsigned" ganz günstig wären.
    Geändert von PaddySD (27.11.2018 um 22:22 Uhr)

  5. #5
    Contao-Nutzer
    Registriert seit
    15.09.2016.
    Beiträge
    85

    Standard

    Bin ein Riesenschritt weiter:
    - DB-Feld in Tabelle "tl_iso_address" ist angelegt
    - im BE einen neuen Bereich (legend) angelegt
    - inputType ist "select" mit entsprechenden language-Dateien vorhanden

    => Im BE funktioniert alles!

    Jetzt möchte ich gerne, daß der User das Feld in seinem Adressbuch ebenfalls editieren kann, sprich eine Select-Box angezeigt bekommt.
    Im Template, daß die Felder der Adressen anzeigt, werden diese wie folgt ausgegeben:

    "<?= $this->arrData['widgets']['firstname']->parse(); ?>"

    Und das eben für alle Felder, die es zu editieren gibt.

    Ein "$this->arrData['widgets']['meinSelectFeld']" gibt es natürlich nicht. Ich konnte leider nicht herausfinden, wo und wie die anderen Felder-Widgets erstellt werden.

    Wie bekomme ich also das Select-Element im Frontend angezeigt bzw das Widget dazu erstellt?

  6. #6
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Vorab: Ich kenne mich mit Isotope nicht aus.

    Ich würde mir die Definition der Felder anschauen, die im FE angezeigt werden und das mit Deiner Felddefinition vergleichen. Irgendetwas muss da noch fehlen.

    Bei tl_member ist es z.B. so, daß es dafür in eval Eintäge gibt (ich glaube feVisible etc.). Ich könnte mir vorstellen, daß es in Deinem Fall etwas ähnliches ist.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Contao-Nutzer
    Registriert seit
    15.09.2016.
    Beiträge
    85

    Standard

    danke für die antwort und sorry, daß ich jetzt erst "reagiere".

    die ganzen einstellungen habe ich überprüft, auch bei eval ist alles korrekt, glaube ich:
    'eval' => array('includeBlankOption'=>false, 'feEditable'=>true, 'feGroup'=>'address', 'tl_class'=>'w50'),

  8. #8
    Contao-Nutzer
    Registriert seit
    15.09.2016.
    Beiträge
    85

    Standard

    ich habs: man muss in der shop-konfi die felder aktivieren.

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
  •