Zum Inhalt springen

Sortierung mit DataHandler

Erstellt am 31. Dezember 2017 · Noch keine Antworten

Tags: Frage

getit ·

Ich habe folgende eine kleine Extension zur Verwaltung von Benutzern und Gebäuden geschrieben:

tx_testsort_domain_model_gebaeude:
name

tx_testsort_domain_model_person:
name,
gebaeude

Wenn man diese Extension mit dem Extensionbuilder anlegt, kann man bereits Gebäude und Personen mit zugewiesenen Gebäuden anlegen.

In der mn-Tabelle 'tx_testsort_person_gebaeude_mm' werden die Verknüpfungen von Personen und Gebäuden gespeichert. Hier existiert auch ein Property 'sorting' - im Listen Modul kann man die Gebäude die einer Person zugewiesen sind sortieren.

Aber wie macht man das in einer eigenen Extension?

Leicht!!
(https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/DataHandler/Database/Index.html)
Man muss einfach den folgenden Code an entsprechender Stelle (z.b. einer Action) platzieren:

$data['tx_testsort_domain_model_person'][5] = [
	'gebaeude' => '1,2,4'
];

$tce = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\DataHandling\\DataHandler');
$tce->start($data, []);
$tce->process_datamap();

Das würde der Person mit der UID 5 die Gebäude 1,2,4 (bzw. die UIDs der Gebäude) zuweisen.
Der String gibt auch gleich die Reihenfolge an.

Nicht existierende UIDs werden ignoriert, erzeugen also keinen Fehler.