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);
}
...
}
?>
Lesezeichen