Contao-Camp 2024
Ergebnis 1 bis 12 von 12

Thema: Daten ins FE übergeben

  1. #1
    Contao-Nutzer
    Registriert seit
    18.06.2017.
    Beiträge
    219

    Standard Daten ins FE übergeben

    Hallo Zusammen,

    ich habe im BE meine Mitgliederdaten um ein SELECT-Feld erweitert. Dabei wird der Feuerwehrdienstgrad eines Mitgliedes gespeichert. Das Feld arbeitet mit Key -> Label.

    Label ist der Dienstgrad in ausgeschriebener Form, Key eine Kurzform. Jetzt bräuchte ich im FE aber beide Informationen. Bisher habe ich nur das Feld "rank" mit der Kurzform. Wie kann ich denn auch die Langform "übergeben". Eine erste Idee war es in meiner Klasse eine Methode hinzuzufügen, welche die Langform zu der Kurzform zurück gibt. Aber kann ich eine Methode meines DCAs aus dem FE aus aufrufen?

    Grundsätzlich könnt ich ja im Template mittels IF z.B. die Langform ermitteln. Dann müsste ich aber eine Liste mit den Dienstgraden im BE und im FE pflegen.

  2. #2
    Contao-Nutzer
    Registriert seit
    18.06.2017.
    Beiträge
    219

    Standard

    Hallo,

    ich muss das noch mal hoch holen. Hat keiner ne Idee oder habe ich mich zu kompliziert ausgedrückt.

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

    Standard

    Wo und wie gibst du das aus?

  4. #4
    Contao-Nutzer
    Registriert seit
    24.08.2018.
    Ort
    Magdeburg
    Beiträge
    131

    Standard

    Zitat Zitat von darkness Beitrag anzeigen
    Hallo,

    ich muss das noch mal hoch holen. Hat keiner ne Idee oder habe ich mich zu kompliziert ausgedrückt.
    Wenn du das Feld in DCA drin hast, kannst du es - wie alle anderen Werte am Objekt - einfach direkt mit der Objektnotation abfragen. Da wirst du die Kurz-Form bekommen. An die Langform kommst du - korrekt umgesetzt - indem du mit der Kurzform als Schlüssel auf das LANG-Array zugreifst.

    Post einfach das Template, wo es rein soll, dann kann dir sicher der eine oder andere die Code-Zeile verrraten.

  5. #5
    Contao-Nutzer
    Registriert seit
    18.06.2017.
    Beiträge
    219

    Standard

    Guten Morgen,

    ich gebe es im Template mod_memberlist aus. Dort greife ich mittels

    Code:
    <p class="rank">test<?php echo $row[0]['raw']['rank'] ?></p>
    drauf zu

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

    Standard

    Poste auch die DCA Anpassung.

  7. #7
    Contao-Nutzer
    Registriert seit
    18.06.2017.
    Beiträge
    219

    Standard

    Hier meine Anpassung

    Code:
    // contao/dca/tl_news.php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;
    
    $GLOBALS['TL_DCA']['tl_member']['fields']['rank'] = [
        'label' => ['Dienstgrad', 'Dienstgrad auswählen'],
        'inputType' => 'select',
        //'options' => ['fwanwaerter' => 'Feuerwehrmannanwärter', 'fwmann' => 'Feuerwehrmann'],
        'options_callback'        => array('tl_feuerwehr', 'getTest'),
        'eval' => ['tl_class' => 'w50', 'maxlength' => 255, 'mandatory' => 'true' ],
        'sql' => ['type' => 'string', 'length' => 255, 'default' => ''],
    ];
    
    PaletteManipulator::create()
        ->addField('rank', 'gender')
        ->applyToPalette('default', 'tl_member')
    ;
    
    class tl_feuerwehr extends Contao\Backend
    {   
        public function getTest(Contao\DataContainer $dc)
        {
                $arrSections = array();
    
               $arrSections = array(
                   'ofwmann' => 'Oberfeuerwehrmann',
                   'fwmann' => 'Feuerwehrmann',
                   'fwanwaerter' => 'Feuerwehrmannanwärter',
               );
    //           dump($arrSections);
                return $arrSections;
        }
    }

  8. #8
    Contao-Nutzer
    Registriert seit
    24.08.2018.
    Ort
    Magdeburg
    Beiträge
    131

    Standard

    Hey darkness - nutzt du das Contao Listing-Bundle zur Darstellung?

  9. #9
    Contao-Nutzer
    Registriert seit
    18.06.2017.
    Beiträge
    219

    Standard

    Hey,

    nein. Ich habe mein Template angepasst.Aber ein
    Code:
    <?php $this->showTemplateVars(); ?>
    zeigt mir, dass nur die Daten im Feld "rank" ankommen

  10. #10
    Contao-Nutzer
    Registriert seit
    24.08.2018.
    Ort
    Magdeburg
    Beiträge
    131

    Standard

    Eigentlich sollte es doch genauso gehen, wie bei allen anderen Werten von dem Nutzer.
    Code:
    <?php echo $row[0]['raw']['rank'] ?>
    Sieht für mich nach Listing-Bundle aus

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

    Standard

    Zitat Zitat von darkness Beitrag anzeigen
    Hier meine Anpassung

    Code:
    // contao/dca/tl_news.php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;
    
    $GLOBALS['TL_DCA']['tl_member']['fields']['rank'] = [
        'label' => ['Dienstgrad', 'Dienstgrad auswählen'],
        'inputType' => 'select',
        //'options' => ['fwanwaerter' => 'Feuerwehrmannanwärter', 'fwmann' => 'Feuerwehrmann'],
        'options_callback'        => array('tl_feuerwehr', 'getTest'),
        'eval' => ['tl_class' => 'w50', 'maxlength' => 255, 'mandatory' => 'true' ],
        'sql' => ['type' => 'string', 'length' => 255, 'default' => ''],
    ];
    
    PaletteManipulator::create()
        ->addField('rank', 'gender')
        ->applyToPalette('default', 'tl_member')
    ;
    
    class tl_feuerwehr extends Contao\Backend
    {   
        public function getTest(Contao\DataContainer $dc)
        {
                $arrSections = array();
    
               $arrSections = array(
                   'ofwmann' => 'Oberfeuerwehrmann',
                   'fwmann' => 'Feuerwehrmann',
                   'fwanwaerter' => 'Feuerwehrmannanwärter',
               );
    //           dump($arrSections);
                return $arrSections;
        }
    }
    Da deine Optionen sowieso nicht dynamisch sind, musst du keinen options_callback verwenden. Stattdessen benutzt du 'options' und 'reference':
    PHP-Code:
    // contao/dca/tl_news.php
    $GLOBALS['TL_DCA']['tl_member']['fields']['rank'] = [
        
    'options' => ['ofwmann''fwanwaerter''fwmann'],
        
    'reference' => &$GLOBALS['TL_LANG']['tl_member']['ranks'],
    ]; 
    PHP-Code:
    // contao/languages/de/tl_member.php
    $GLOBALS['TL_LANG']['tl_member']['ranks'] = [
        
    'ofwmann' => 'Oberfeuerwehrmann',
        
    'fwmann' => 'Feuerwehrmann',
        
    'fwanwaerter' => 'Feuerwehrmannanwärter',
    ]; 
    Und in deinem Template dann zB:
    PHP-Code:
    <?= $this->trans('ranks.'.$row[0]['raw']['rank'], [], 'contao_tl_member'?>
    oder
    PHP-Code:
    {{label::tl_member:ranks:<?= $row[0]['raw']['rank'?>}}

  12. #12
    Contao-Nutzer
    Registriert seit
    18.06.2017.
    Beiträge
    219

    Standard

    Danke. Werde ich mal testen.

    Das dynamische soll noch kommen. Anhand des Geschlechts soll der Dienstgrad angepasst werden. Feuerwehrmann/-frau.

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
  •