Contao-Camp 2024
Ergebnis 1 bis 15 von 15

Thema: DCA Erweiterung fügt keine Spalten hinzu

  1. #1
    Contao-Nutzer
    Registriert seit
    05.06.2020.
    Beiträge
    10

    Standard DCA Erweiterung fügt keine Spalten hinzu

    Hallo zusammen,
    ich habe folgendes Problem: Gmäss dieser Anleitung möchte ich die Tabelle tl_page um ein Feld erweitern.
    Im Contao install tool läuft alles fehlerlos durch.vor_install.png
    Problem ist nur, dass das Feld einfach nicht zur DB hinzugefügt wird und auch im Backend nicht bei den Seiten erscheint.
    PHP Code:
    PHP-Code:
    use Contao\CoreBundle\DataContainer\PaletteManipulator;
    $GLOBALS['TL_DCA']['tl_page']['fields']['module_id'] = [
        
    'label'     =>  ['Modul ID','ID des Moduls, das eingebunden werden soll'],
        
    'inputType' => 'text',
        
    'eval' => ['tl_class' => 'w50''maxlength' => 255],
        
    'sql' => ['type' => 'string''length' => 255'default' => ''],
    ];
    PaletteManipulator::create()
        ->
    addField('module_id''expert_legend'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_page')

    Ich hab keinen Ansatz, woran es liegen könnte und bin für jede hilfe dankbar.
    Korrektur: Das Feld wird zur DB hinzugefügt, aber es erscheint nicht im Backend. Was fehlt hier noch? Was mache ich falsch?
    Geändert von FM - Contao Anfänger (16.11.2020 um 15:04 Uhr)

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

    Standard

    Du hast die "default" Palette verändert. Das ist vermutlich nicht die richtige (weil die wird ja nie angezeigt).

  3. #3
    Contao-Nutzer
    Registriert seit
    05.06.2020.
    Beiträge
    10

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du hast die "default" Palette verändert. Das ist vermutlich nicht die richtige (weil die wird ja nie angezeigt).
    Und wie finde ich heraus, wie der erste Parameter der Funktion "applyToPalette" lauten muss, damit das Feld auch angezeigt wird? Ich finde in der Doku nichts dazu, nur den Satz "In the most basic form you will have at least a default palette", der mir aber nicht mit Sicherheit sagt, ob der key "default" überhaupt zielführend im Sinne einer Anzeige im Backend ist.

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

    Standard

    Welches DCA welche Paletten hat, kann dir aktuell nur der Code selbst sagen, dafür gibt es keine Referenz. Siehe zB: https://github.com/contao/contao/blo....php#L173-L187. Im Falle von tl_page beziehen sich die einzelnen Paletten auf den type.

  5. #5
    Contao-Nutzer
    Registriert seit
    05.06.2020.
    Beiträge
    10

    Daumen hoch

    Zitat Zitat von Spooky Beitrag anzeigen
    Welches DCA welche Paletten hat, kann dir aktuell nur der Code selbst sagen, dafür gibt es keine Referenz. Siehe zB: https://github.com/contao/contao/blo....php#L173-L187. Im Falle von tl_page beziehen sich die einzelnen Paletten auf den type.
    Super, allerbesten Dank! Damit komme ich bestimmt weiter!

  6. #6
    Contao-Nutzer
    Registriert seit
    05.06.2020.
    Beiträge
    10

    Standard

    Zitat Zitat von FM - Contao Anfänger Beitrag anzeigen
    Super, allerbesten Dank! Damit komme ich bestimmt weiter!
    Hat leider nichts gebracht.

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

    Standard

    Was hat nichts gebracht? Du musst dich schon ein wenig besser ausdrücken

  8. #8
    Contao-Nutzer
    Registriert seit
    05.06.2020.
    Beiträge
    10

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Was hat nichts gebracht? Du musst dich schon ein wenig besser ausdrücken
    das problem besteht fort. Das F3eld wird zwar zur DB hinzugefügt, die SQL-Abfrage im contao-manager läuft fehlerfrei durch, aber das Feld erscheint einfach nicht im Backend.
    Wenn ich statt "tl_page" "tl_member" nehme und die Datei tl_member.php nenne, wird das Feld auch im Backend unter Mitglieder in einem Datensatz angezeigt.

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

    Standard

    Wir bereits erwähnt hattest du in deinem ursprünglichen Code nur die "default" Palette angepasst, du musst aber die richtigen Paletten anpassen. Hast du das nun gemacht? Wenn ja, wie sieht dein aktualisierter Code aus?

  10. #10
    Contao-Nutzer
    Registriert seit
    05.06.2020.
    Beiträge
    10

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wir bereits erwähnt hattest du in deinem ursprünglichen Code nur die "default" Palette angepasst, du musst aber die richtigen Paletten anpassen. Hast du das nun gemacht? Wenn ja, wie sieht dein aktualisierter Code aus?
    Code:
    use Contao\CoreBundle\DataContainer\PaletteManipulator;
    $GLOBALS['TL_DCA']['tl_page']['fields']['module_id'] = [
        'label'     =>  ['Modul ID','ID des Moduls, das eingebunden werden soll'],
        'inputType' => 'text',
        'eval' => ['tl_class' => 'w50', 'maxlength' => 255],
        'sql' => ['type' => 'string', 'length' => 255, 'default' => ''],
    ];
    PaletteManipulator::create()
        ->addField('module_id', 'title_legend', PaletteManipulator::POSITION_APPEND)
        ->applyToPalette('default', 'tl_page')
    ;
    Habe statt "expert_legend" jetzt "title_legend" genommen.

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

    Standard

    Das ist der unangepasste Code aus #1. Ist das nach wie vor dein aktueller Code? Wenn ja, dann hast du noch keine entsprechende Änderung gemacht.

  12. #12
    Contao-Nutzer
    Registriert seit
    05.06.2020.
    Beiträge
    10

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das ist der unangepasste Code aus #1. Ist das nach wie vor dein aktueller Code? Wenn ja, dann hast du noch keine entsprechende Änderung gemacht.
    alt: ->addField('module_id', 'expert_legend', PaletteManipulator::POSITION_APPEND)
    neu: ->addField('module_id', 'title_legend', PaletteManipulator::POSITION_APPEND)

    Das "title_legend" ist in allen enthalten, wenn ich den Quellcode richtig verstehe. Es steht immer am Anfang des Strings.

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

    Standard

    Ja, aber es ging um die Palette nicht um die Legend . Du benutzt immer noch die default Palette. Die wird aber niemals angezeigt, weil es keine Seite vom Typ default gibt. Je nach dem bei welchem Seitentyp du das Feld angezeigt bekommen möchtest, musst du auch die entsprechende Palette nehmen. Bei regulären Inhaltsseiten wäre das bspw. die Palette regular.

  14. #14
    Contao-Nutzer
    Registriert seit
    05.06.2020.
    Beiträge
    10

    Daumen hoch

    Zitat Zitat von Spooky Beitrag anzeigen
    Ja, aber es ging um die Palette nicht um die Legend . Du benutzt immer noch die default Palette. Die wird aber niemals angezeigt, weil es keine Seite vom Typ default gibt. Je nach dem bei welchem Seitentyp du das Feld angezeigt bekommen möchtest, musst du auch die entsprechende Palette nehmen. Bei regulären Inhaltsseiten wäre das bspw. die Palette regular.
    Super, das war's, allerbesten Dank!
    Hier habe ich wohl den Wald vor lauter Bäumen nicht gesehen.
    Bin halt noch Anfänger und muss die Bedeutung der Begriffe noch lernen....

  15. #15
    Contao-Fan Avatar von dhe
    Registriert seit
    25.10.2010.
    Ort
    Esslingen a.N.
    Beiträge
    657

    Standard

    Da klinke ich mich gleich mal ein, ich habe dasselbe Problem, allerdings in der news-bundle extension.
    Ich will die "newslist" erweitern, das Feld wird ordnungsgemäß in der DB erstellt, allerdings erscheint das Feld nicht in der BE-Maske.
    Hat jemand einen Tipp, was ich falsch gemacht habe?

    PHP-Code:
    <?php

    use Contao\CoreBundle\ContaoCoreBundle;
    use 
    Contao\CoreBundle\DataContainer\PaletteManipulator;
    use 
    Contao\NewsBundle\ContaoNewsBundle;

    /**
     * Extend tl_module palettes
     */

    if (class_exists(ContaoCoreBundle::class)) {
            
    PaletteManipulator::create()
                ->
    addField('mytest''config_legend'PaletteManipulator::POSITION_APPEND)
                ->
    applyToPalette('newslist''tl_module')
            ;

    } else {
        
    $GLOBALS['TL_DCA']['tl_module']['palettes']['newslist'] = str_replace(',perPage'',perPage,mytest'$GLOBALS['TL_DCA']['tl_module']['palettes']['newslist']);
    }

    $GLOBALS['TL_DCA']['tl_module']['fields']['mytest'] = array
    (
        
    'exclude'                 => true,
        
    'inputType'               => 'checkbox',
        
    'eval'                    => array('tl_class'=>'w50'),
      
    'sql'                     => ['type' => 'boolean''default' => 0],
    );
    was mache ich falsch?

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
  •