Ergebnis 1 bis 8 von 8

Thema: Backend Selectfeld zeigt falschen Eintrag

  1. #1
    Contao-Nutzer
    Registriert seit
    24.04.2018.
    Beiträge
    115

    Standard Backend Selectfeld zeigt falschen Eintrag

    Hi,
    ich habe im Backend 2 Selectfelder für meine Datenbanktabelle.
    In der Übersicht (Liste) werden alle Datensätze auch korrekt angezeigt, allerdings wenn ich einen Datensatz auswähle, ist doort bei jedem Selectfeld der erste Eintrag der Liste ausgewählt. Also nicht der Eintrag, der in der Datenbank steht.
    Ich gehe davon aus, dass es ein Problem mit dem Optionscallback gibt, aber die ID's im Array werden korrekt gesetzt wie bei den anderen Modulen auch.

    Code:
        public function myProductOptionsCallback(DataContainer $dc)
        {
            $values = array();
            $products = $this->Database->prepare("SELECT id,title FROM tl_ls_shop_product WHERE lb_isConsulting = TRUE ")->execute();
            //Array erzeugen
            while($products->next())
            {
                $values[$products->id] = "<b>".$products->title."</b> ";
            }
            return $values;
        }
    Code:
        public function myMemberOptionsCallback(DataContainer $dc)
        {
            $values = array();
            $members = $this->Database->prepare("SELECT id,firstname,lastname FROM tl_member WHERE lb_isStaff = TRUE ")->execute();
            //Array erzeugen
            while($members->next())
            {
                $values[$members->id] = $members->lastname." ".$members->firstname;
            }
            return $values;
        }
    Ich kann einfach nicht den Unterschied zu meinen anderen OptionCallbacks finden.
    Danke für Hilfer
    LG
    Mattes
    Matthias Honisch
    LocalBranding

  2. #2
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.809

    Standard

    Es steht also
    HTML-Code:
    <option value="1">Option 1</option>
    <option value="1">Option 2</option>
    <option value="1">Option 3</option>
    <option value="1">Option 4</option>
    im HTML-Quellcode und in Deinem Array steht
    PHP-Code:
    array
    (
        
    "1" => "Option 1",
        
    "2" => "Option 2",
        
    "3" => "Option 3",
        
    "4" => "Option 4",

    ?

    Und wie übergibst Du die Optionen im DCA des Feldes?

    EDIT: Oder verstehe ich Dein Problem komplett falsch und Du meinst die Vorselektierung eines Eintrags? D.h. "selected" ist immer der 1. Eintrag, anstatt der z.B. aktive Eintrag an Position 5.
    Geändert von Samson1964 (09.12.2018 um 07:35 Uhr)
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  3. #3
    Contao-Nutzer
    Registriert seit
    24.04.2018.
    Beiträge
    115

    Standard

    Hi,
    es geht um die Vorselektierung, wenn ich einen bereits existierenden Datensatz "bearbeiten" will. Im Formular für das bearbeiten, die Select-Felder haben immer den ersten Eintrag in der Liste "selected", nicht den momentanen Eintrag für diesen Datensatz. Also @Samson1964 letzteres
    Matthias Honisch
    LocalBranding

  4. #4
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.809

    Standard

    Macht Contao die Selektierung nicht selbständig? Jedenfalls brauche ich nichts zusätzlich angeben. Wenn ich in so einem SELECT-Feld etwas ausgewählt und gespeichert habe, ist beim nächsten Aufruf des Formulars der richtige Eintrag vorselektiert.
    Ansonsten versuche es doch mal mit dem default-Parameter im DCA.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  5. #5
    Contao-Nutzer
    Registriert seit
    24.04.2018.
    Beiträge
    115

    Standard

    Das ist ja der Grund warum ich verwirrt bin und frage Ansonsten funktioniert es ja und Contao nimmt den Eintrag, mit der ID die im Datensatz steht, aus dem Array. Hier die DCA-Felder. Es kann doch nur an den Feldern oder an den Callbackfunktionen liegen oder nicht?
    PHP-Code:
            'lb_memberid' => array
            (
                
    'label'              => &$GLOBALS['TL_LANG']['tl_lb_member_shop_products']['lb_memberid'],
                
    'sql'                => "int(10) unsigned NOT NULL default '0'",
                
    'exclude'   => true,
                
    'eval'               => array('feEditable'=>true'feViewable'=>true),
                
    'foreignKey'         => 'tl_member.id',
                
    'relation'           => array('type'=>'belongsTo''load'=>'lazy'),
                
    'options_callback'  => array('tl_lb_member_shop_products_class''myMemberOptionsCallback'),
                
    'inputType'          => 'select'
            
    ),
            
    'lb_productid' => array
            (
                
    'label'              => &$GLOBALS['TL_LANG']['tl_lb_member_shop_products']['lb_productid'],
                
    'sql'                => "int(10) unsigned NOT NULL default '0'",
                
    'exclude'   => true,
                
    'eval'               => array('feEditable'=>true'feViewable'=>true),
                
    'foreignKey'         => 'tl_ls_shop_product.id',
                
    'relation'           => array('type'=>'belongsTo''load'=>'lazy'),
                
    'options_callback'  => array('tl_lb_member_shop_products_class''myProductOptionsCallback'),
                
    'inputType'          => 'select'
            
    ), 
    Matthias Honisch
    LocalBranding

  6. #6
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.809

    Standard

    Das mit dem foreignKey stört mich etwas. Wozu brauchst Du das, wenn Du Deine Select-Liste sowieso mit einem Callback zusammenbaust? Ich glaube da überschreibt sich was gegenseitig.
    Wenn ich foreignKey verwende, brauche ich kein options_callback.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  7. #7
    Contao-Nutzer
    Registriert seit
    24.04.2018.
    Beiträge
    115

    Standard

    Also ich habe es auch in allen anderen DCA Selects und dort gibt es keine Probleme. Und ich weiß auch nicht wirklich warum das stören sollte. Ich habe es dazu geschrieben, weil diese Verbindung ja halt besteht und ich auf Nummer sicher gehen wollte, dass das ORM die Beziehungen auch korrekt anlegt etc.
    Matthias Honisch
    LocalBranding

  8. #8
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.809

    Standard

    Also ich würde es trotzdem so versuchen:
    PHP-Code:
    'lb_memberid' => array
    (
        
    'label'              => &$GLOBALS['TL_LANG']['tl_lb_member_shop_products']['lb_memberid'],
        
    'sql'                => "int(10) unsigned NOT NULL default '0'",
        
    'exclude'            => true,
        
    'eval'               => array('feEditable'=>true'feViewable'=>true),
        
    //'foreignKey'         => 'tl_member.id',
        
    'foreignKey'         => 'tl_user.CONCAT(name," (",username,")")',
        
    'relation'           => array('type'=>'belongsTo''load'=>'lazy'),
        
    //'options_callback'   => array('tl_lb_member_shop_products_class', 'myMemberOptionsCallback'),
        
    'inputType'          => 'select'
    ),
    'lb_productid' => array
    (
        
    'label'              => &$GLOBALS['TL_LANG']['tl_lb_member_shop_products']['lb_productid'],
        
    'sql'                => "int(10) unsigned NOT NULL default '0'",
        
    'exclude'            => true,
        
    'eval'               => array('feEditable'=>true'feViewable'=>true),
        
    //'foreignKey'         => 'tl_ls_shop_product.id',
        
    'relation'           => array('type'=>'belongsTo''load'=>'lazy'),
        
    'options_callback'   => array('tl_lb_member_shop_products_class''myProductOptionsCallback'),
        
    'inputType'          => 'select'
    ), 
    Das Callback mit myMemberOptionsCallback ist überflüssig, weil Du ja über foreignKey die Daten holst.
    Das Callback mit myProductOptionsCallback ergibt zusammen mit dem foreignKey keinen Sinn. Oder Du holst Dir die Daten analog dem oben DCA-Feld mit CONCAT.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •