Zum Inhalt springen

TCA-Problem mit Auswahl-Listen

Erstellt am 30. November 2015 · 1 Antwort · letzte Antwort am 1. Dezember 2015

Tags: TCA, Frontend-Benutzer, Frage

buzz-dee ·

Hallo liebes Forum,

ich habe folgendes Problem: Bei einer Extension soll es Veranstaltungenm, Veranstalter und Musiker geben. Jetzt habe ich gedacht, dass ich für die Veranstalter und Musiker fe_users erweitere. Im Kickstarter habe ich dazu "map to exitising class" gewählt und die speziellen Eigenschaften hinzugefügt. Das funktioniert auch.
Das Problem ist die Darstellung der Selects im Backend, wenn ich eine neue Veranstaltung anlegen möchte. Da werden jetzt bei beiden Listen nur die Usernamen angezeigt. Ich hätter aber gern bei den Veranstaltern den Firmenname (company) und bei den Musikern den Namen (last_name, first_name).
Leider habe ich keine Ahnung, wie ich das anstellen soll. "label" und "label_alt" gibt es ja nur in der Ctrl-Sektion des Models, oder? Und da könnte ich das dann nicht unterscheiden, weil es ja nur für "fe_user" generell einzustellen geht.
Hat jemand eine Idee?

Viele Grüße
Seb

buzz-dee · · Beste Antwort

Habe es nun hinbekommen und zwar über eine label_userFunc. Falls jemand mal das gleiche Problem hat:

Dazu muss man eine Klasse anlegen (z.B. Tca), die eine Funktion enthält (z.B. renderUserLabel):

<?php

namespace MyVendor\MyExt\UserFunc;

class Tca{
	
	public function renderUserLabel(&$params, &$pObj) {

		$row = $params["row"];
		
		if ($row["tx_extbase_type"]=="Tx_MyExt_Musiker") {
			$params["title"] = $row["last_name"].", ".$row["first_name"];
		}
		
		if ($row["tx_extbase_type"]=="Tx_MyExt_Veranstalter"){
			$params["title"] = $row["company"];
		}
		
	}
	
}

?>

Anschließend muss man sie in der ext_tables.php registrieren und über label_alt die benötigten Parameter mitgeben, die in der Funktion dann in $params["row"] enthalten sein sollen:

# Render labels for users
$GLOBALS['TCA']['fe_users']['ctrl']['label'] = "last_name";
$GLOBALS['TCA']['fe_users']['ctrl']['label_alt'] = "first_name,company,tx_extbase_type";
$GLOBALS['TCA']['fe_users']['ctrl']['label_userFunc'] = 'MyVendor\\MyExt\\UserFunc\\Tca->renderUserLabel';