Da ich mich mit diesem Thema an ein anderes angehängt hatte, hier noch einmal eine Zusammenfassung:
Dies wäre eine mögliche Umsetzung für den Featurerequest
Issue [VF-800]: Felder mit Optionslisten: Ausgabe als Liste
den ich ja bereits angelegt habe.
Hallo Aicha,
in select.php und selectsql.php habe ich für DISPLAYOPTIONLABELASLIST lediglich den Implode-Separator wie im Code unten ersetzt. Das funktioniert problemlos gut. So kann ein Komma auch im Label enthalten sein.
Für DISPLAYOPTIONVALUEASLIST musste statt des Entfernen des 'Nullbyte', auch 'nur' das 'Nullbyte-Komma' durch '<br />' ersetzt werden.
Weitergehende HTML-Listenelemente (ul/dl/ol) habe ich an der Stelle getestet, aber für mich als überflüssig empfunden. Ein Zeilenumbruch genügt
So lautet der komplett funktionierende Code:
Code:
switch ($this->param) {
case 'DISPLAYOPTIONVALUE' :
return HTMLHelper::_('visformsselect.removeNullbyte', $this->rawData);
case 'DISPLAYOPTIONVALUEASLIST' :
// Comma separated data string
// $dataString = HTMLHelper::_('visformsselect.removeNullbyte', $this->rawData);
// data string as list
$dataString = HTMLHelper::_('visformsselect.removeNullbyte', str_replace('\0, ','<br />',
$this->rawData));
$list = $this->getListHtml($dataString);
return $list;
case 'DISPLAYOPTIONLABELASLIST' :
// Comma separated data string
// $dataString = implode(', ', HTMLHelper::_('visformsselect.mapDbValueToOptionLabel', $this->rawData, $this->field->list_hidden));
// data string as list
$dataString = implode('<br />', HTMLHelper::_('visformsselect.mapDbValueToSqlOptionLabel', $this->rawData, $this->field->sql));
$list = $this->getListHtml($dataString);
return $list;
case 'DISPLAYOPTIONLABEL':
default:
return implode(', ', HTMLHelper::_('visformsselect.mapDbValueToSqlOptionLabel', $this->rawData, $this->field->sql));
}
Das ist jetzt aber nicht wirklich updatesicher. Vielleicht findet das in dieser (oder besser passender) Form einmal Berücksichtigung.