Ergebnis 1 bis 5 von 5

Thema: "Toggle" Checkbox im Backend

  1. #1
    Contao-Nutzer
    Registriert seit
    20.11.2018.
    Beiträge
    3

    Standard "Toggle" Checkbox im Backend

    Hi,
    ich will eine eigene Palette im Backend anzeigen lassen, wenn die Checkbox darüber gechecheckt wird. Ich habe mir dazu in Contao-Core die "Login" Box angeschaut. Jetzt sehe ich zwar die Checkbox, aber wenn ich sie checke passiert nichts. Die Felder sind definitiv beide da, wenn ich sie normal zu der Standartpalette hinzufüge, sehe ich beide, aber ich hätte es gerne wie bei "Login".

    Code:
    <?php
    /**
     * Table tl_member
     */
    
    
    //Legenden hinzufügen
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default']=str_replace('{contact_legend','{location_legend},my_location;{staff_legend},my_isStaff;{contact_legend',$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] );
    
    $GLOBALS['TL_DCA']['tl_member']['subpalettes'][] = array('my_isStaff' => 'my_staffCalendar');  
    $GLOBALS['TL_DCA']['tl_member']['palettes']['__selector__'][] = 'my_isStaff'; 
    // Hinzufügen der Feld-Konfiguration
    $GLOBALS['TL_DCA']['tl_member']['fields']['my_location'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_member']['my_location'],
        'exclude'   => true,
        'inputType' => 'select',
        'eval'      => array('feEditable'=>true, 'feViewable'=>true),
        'foreignKey'=> 'tl_my_location.name',
        'sql'       => "int(10) unsigned NOT NULL default '0'"
    );
    
    $GLOBALS['TL_DCA']['tl_member']['fields']['my_isStaff'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_member']['my_isStaff'],
        'exclude'                 => true,
        'filter'                  => true,
        'inputType'               => 'checkbox',
        'sql'                     => "char(1) NOT NULL default ''"
    );
    
    $GLOBALS['TL_DCA']['tl_member']['fields']['my_staffCalendar'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_member']['my_staffCalendar'],
        'exclude'   => true,
        'inputType' => 'select',
        'eval'      => array('feEditable'=>true, 'feViewable'=>true),
        'foreignKey'=> 'tl_calendar.id',
        'options_callback'  => array('my_tl_member', 'myOptionsCallback'),
        'sql'       => "int(10) unsigned NOT NULL default '0'"
    );
    
    class my_tl_member extends Backend
    {
        /**
         * options_callback: Ermöglicht das Befüllen eines Drop-Down-Menüs oder einer Checkbox-Liste mittels einer individuellen Funktion.
         * @param  $dc
         * @return array
         */
        public function myOptionsCallback(DataContainer $dc)
        {
            $values = array();
            $calendars = $this->Database->prepare("SELECT id,title FROM tl_calendar ORDER BY title ASC")->execute();
            //Array erzeugen
            while($calendars->next())
            {
                $values[$calendars->id] = "<b>".$calendars->title."</b> ";
            }
            return $values;
        }
    
        
    }
    Grüße
    Der Eddi

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

    Standard

    Schau dir mal eval an!

    PHP-Code:
    'eval' => array('submitOnChange'=>true), 

  3. #3
    Contao-Nutzer
    Registriert seit
    20.11.2018.
    Beiträge
    3

    Standard

    Hi,
    ich habe das schon ausprobiert. Bei der checkbox führt das dazu, dass die Seite neu geladen wird. Aber das feld darunter wird immernoch nicht angezeigt.
    Ich habe mich allerdings gewundert, wieso bei meiner Checkbox die Seite neu geladen wird, aber bei der Login-Checkbox (die ja auch "submitonchange= true" hat) passiert das nicht. Da klappen die Felder einfach nur ein und aus.

    Ich habe mir mal die clickevents auf den Checkboxen angesehen.
    Meine hat (mit submitOnChange=true):
    Code:
    function onclick(event) {
      Backend.autoSubmit('tl_member')
    }
    Die Login Checkbox hat:
    Code:
    function onclick(event) {
      AjaxRequest.toggleSubpalette(this, 'sub_login', 'login')
    }
    Wie kommt das?
    Geändert von Edditarz (20.11.2018 um 09:56 Uhr)

  4. #4
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Du hast einen Fehler in deinen Code. Die Subpalette muss wie folgt definiert werden (Die Option submitOnChange wird wie oben erwähnt auch benötigt):

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['subpalettes']['my_isStaff'] = 'my_staffCalendar'

  5. #5
    Contao-Nutzer
    Registriert seit
    20.11.2018.
    Beiträge
    3

    Standard

    Hi, das war es.
    Ich dachte, dass das was ich geschrieben hatte das äquivalent war. Anscheinend nicht Danke

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
  •