[Frage] TCA-Problem mit Auswahl-Listen [Gelöst]

  • buzz-dee buzz-dee
    Padawan
    0 x
    46 Beiträge
    1 Hilfreiche Beiträge
    30. 11. 2015, 19:55

    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 buzz-dee
    Padawan
    0 x
    46 Beiträge
    1 Hilfreiche Beiträge
    01. 12. 2015, 12:35 - Lösung

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

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

    1. <?php
    2.  
    3. namespace MyVendor\MyExt\UserFunc;
    4.  
    5. class Tca{
    6.  
    7. public function renderUserLabel(&$params, &$pObj) {
    8.  
    9. $row = $params["row"];
    10.  
    11. if ($row["tx_extbase_type"]=="Tx_MyExt_Musiker") {
    12. $params["title"] = $row["last_name"].", ".$row["first_name"];
    13. }
    14.  
    15. if ($row["tx_extbase_type"]=="Tx_MyExt_Veranstalter"){
    16. $params["title"] = $row["company"];
    17. }
    18.  
    19. }
    20.  
    21. }
    22.  
    23. ?>


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

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


  • 1
  • buzz-dee buzz-dee
    Padawan
    0 x
    46 Beiträge
    1 Hilfreiche Beiträge
    01. 12. 2015, 12:35

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

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

    1. <?php
    2.  
    3. namespace MyVendor\MyExt\UserFunc;
    4.  
    5. class Tca{
    6.  
    7. public function renderUserLabel(&$params, &$pObj) {
    8.  
    9. $row = $params["row"];
    10.  
    11. if ($row["tx_extbase_type"]=="Tx_MyExt_Musiker") {
    12. $params["title"] = $row["last_name"].", ".$row["first_name"];
    13. }
    14.  
    15. if ($row["tx_extbase_type"]=="Tx_MyExt_Veranstalter"){
    16. $params["title"] = $row["company"];
    17. }
    18.  
    19. }
    20.  
    21. }
    22.  
    23. ?>


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

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

  • 1