Ergebnis 1 bis 2 von 2

Thema: options_callback liefert mir sämtliche Elemente ungewollt als selected

  1. #1
    Contao-Nutzer Avatar von easy
    Registriert seit
    17.03.2011.
    Ort
    Remagen
    Beiträge
    58

    Standard options_callback liefert mir sämtliche Elemente ungewollt als selected

    Hallo, (es wäre schön, wenn mir jemand hierzu was sagen könnte - ich steh im Moment aufm Schlauch)

    folgendes Problem habe ich mir kreiert und ich hoffe, dass mir jemand einen Tipp geben kann.

    Im Backend soll eine DropDownbox mit einer Reihe von Werten angezeigt werden, hier im speziellen sind es Updateinfos zu Contentelementen. Das funktioniert auch soweit.

    Die Sache hat nur einen Haken: sämtliche Werte, die über die options_callback Schnittstelle ermittelt werden, werden als selected markiert. Eigentlich sollte standardmäßig nur der erste Werte der Liste selected sein.

    Die Frage: Wie kann ich die Markierung mit selected am besten beeinflussen, ob im options_callback oder mit Hilfe anderer Parameter? Normalerweise gebe ich im options_callback nur eine einfache Liste mit den Werten zurück.

    Die Werte werden aus einem zusätzlichen Datenbankfeld (blob) ausgelesen und sehen vom Aufbau her folgendermaßen aus:

    "(1) Name Datum Uhrzeit Infotext"

    Hat irgend jemand eine Info oder Idee?

    Mit besten Grüßen, Gerd

    Ach ja, die Contao Version ist vielleicht auch noch interessant: 2.11.2

    und hier noch ein Ausschnitt aus dem dca:

    Code:
    <?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');
    
    ...
    
    // field - updateinfo
    $GLOBALS['TL_DCA']['tl_content']['fields'] = array_merge
    (
      $GLOBALS['TL_DCA']['tl_content']['fields'],
      array
      (
        'updateinfo' => array 
            (
                'label'                   => &$GLOBALS['TL_LANG']['tl_content']['updateinfo'],
                'exclude'                 => true,
                'inputType'               => 'select',
                'options_callback'        => array('tl_content_extended','getUpdateInfo'),
                'save_callback'              => array
                  (
                    array('tl_content_extended','saveUpdateInfo')
                  ),
                'eval'                    => array('multiple'=>false,'tl_class'=>'w50')
        )
      )                                        
    );
    
    ... 
    
    class tl_content_extended extends Backend
    {
        protected $limit = 5;
        protected $viewlimit = 3;
        /**
         * Import the back end user object, the language files and the dca
         */
        public function __construct()
        {
            parent::__construct();
    ...
         }
    
        /**
         * Return updateinfo
         * @param DataContainer
         * @return array
         */
        public function getUpdateInfo(DataContainer $dc)
        {
            // aktuelle UpdateInfos lesen und deserialisieren
            $updInfo = deserialize($dc->activeRecord->updateinfo,true);
            // Anzahl Elemente
            $cnt = count($updInfo);
            // Wert des letzten Updates aus dem ersten String lesen "(wert)" und aufbereiten
            $s = explode(" ",$updInfo[$cnt-1]);
            $num = str_replace("(","",$s[0]);
            $num = str_replace(")","",$num);
            // Zähler für den neuen Eintrag erhöhen
            $lastCnt = $num+1;  
            // Wenn nochnicht initialisiert, dann den Platzhalter "-Neu-" einsetzen
            if (!is_array($updInfo) || $updInfo == NULL) {
                   $updArr = array($GLOBALS['TL_LANG']['tl_content']['new']);
            } else {
                // wenn Anzahl Elemente kleiner als gewünschte Anzeigemenge, dann alle übernehmen
                $updArr = array();
                if ($cnt <= $this->viewlimit) {
                    $updArr = $updInfo;
                } else {
                    // Created-eintrag und Platzhalter einfügen, der die ausgeblendeten Zeilen ersetzt
                    $updCre = array($updInfo[0],'...');
                    // die letzten Elemente übernehmen
                    $upds = array();
                    $upds = array_slice($updInfo,$cnt-($this->viewlimit-1),$this->viewlimit-1);
                    $updArr = array_merge($updCre,$upds);
                }
            }
            return array_reverse($updArr);
        }
    
    ...
    }
    
    ?>
    Geändert von easy (15.10.2012 um 12:03 Uhr)

  2. #2
    Contao-Nutzer Avatar von easy
    Registriert seit
    17.03.2011.
    Ort
    Remagen
    Beiträge
    58

    Frage Options callback know how gefragt

    Hallo zusammen,

    hat noch niemand ein derartiges Problem gehabt?

    Sollte das Problem nicht verständlich sein, gebe ich mir gerne Mühe das besser und genauer zu beschreiben.

    Mit besten Grüßen, Gerd

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
  •