Zum Inhalt springen

Backend Checkboxen in Datenbank Komma-getrennt speichern

Erstellt am 2. November 2015 · 3 Antworten · letzte Antwort am 4. November 2015

Tags: TCA, Datenbank, Frage

marion-j ·

Hallo,

wir müssen in einer Extension im Backend ein paar Checkboxen hinzufügen. Funktioniert soweit auch.
Aber die angeklickten Checkboxen werden binär umgewandelt und in der Datenbank als eine Zahl abgespeichert (zB. 1 und 2 Checkbox gewählt ergibt Wert 3). Irgendwie muss es doch möglich sein diese auch Komma-getrennt zu speichern.
Irgendwo hatte ich einen Hinweis mit renderType gefunden. Zahlreich Optionen mit renderType haben nichts gebracht.
Wie kann man die Auswahl Komma-getrennt speichern?

Unser Code:

'kategorien' => array(
	'exclude' => 1,
	'label' => 'LLL:EXT:meineExtension/Resources/Private/Language/locallang_db.xlf:tx_meineExtension_domain_model.kategorien',
	'config' => array(
		'type' => 'check',
		'cols' => 3,
		'minitems' => 0,
		'maxitems' => 99,
		'renderType' => 'selectSingleBox',
		'items' => array(
			array('Kategorie 1', '1'),
			array('Kategorie 2', '2'),
			array('Kategorie 3', '3'),
		),
	),
),
Julian.​Hofmann ·

Hallo Marion.

renderType ist eine Einstellung für den Feldtyp "select". Für den Typ "check" wird dieser Eintrag einfach übersprungen.

Vielleicht wäre es eine Lösung, die Verknüpfung mit Kategorien via Kategorie-Tabelle und eines (Multi-)Selectfeldes zu lösen?

Viele Grüße aus Würzburg
Julian

toifel ·

Anstatt "check" mal mit dem Typ "select" und dazu renderType "selectCheckBox" testen.

Aus den Docs:
"selectCheckBox - List of checkboxes for selecting muliple values."

marion-j ·

Vielen Dank für die Hinweise.
Mit dem multiple value selector ist es doch wesentlich einfacher. Und die Werte werden auch Komma-getrennt in der DB gespeichert.
Ich habe es jetzt so gemacht:

'kategorien' => array(
	'exclude' => 1,
	'label' => 'LLL:EXT:meineExtension/Resources/Private/Language/locallang_db.xlf:tx_meineExtension_domain_model.kategorien',
	'config' => array(
		'type' => 'select',
		'size' => 3,
		'maxitems' => 3,
		'items' => array(
			array('Kategorie 1', 1),
			array('Kategorie 2', 2),
			array('Kategorie 3', 3),
		),
	),
),