[Frage] fe_user M:M Relation Ausgabe TYPO3-Version: 9.5.5

  • 0 x
    19 Beiträge
    0 Hilfreiche Beiträge
    31. 05. 2019, 15:33

    Hey Leute,

    Ich hoffe, mir kann vielleicht jemand auf den letzten Metern meiner Extension helfen. Ich bin blutiger Extbase Anfänger aber Listen- und Detailansicht eines fe_user stehen soweit :)

    Ich habe über den Extension Builder die fe_user Tabelle erweitert. Auf „normale“ Felder mit Inhalt kann ich zugreifen und sie ausgeben, kein Problem soweit. Ein weiteres Feld „fachgebiete“ habe ich als M:M Relation (Tabelle tx_musiker_fachgebiete, tx_mmmusiker_erweiterteinfos_fachgebiete_mm) angelegt und hier tu ich mich schwer mit der Ausgabe bzw. dem Handling im Controller.

    In der showAction meines Controllers übergebe ich alles für die Detail-Ansicht eines Frontend-Users ( for each im Template und dann {feuser.xxx) ), wie kann ich jetzt zusätzlich die zugewiesenen Fachgebiete ausgeben? In {feuser.fachgebiete} steht ja nur die Anzahl der zugewiesen Fachgebiete... darüber möchte ich aber den Titel aller dem User zugeordneten Fachgebiete ausgeben.

    Hier mal meine Dateien (Ausschnitte):

    ErweiterteInfosController.php:
    [code]…
    /**
    * User ExtendFeUser
    *
    * @var \Mmmusiker\MmMusiker\Domain\Repository\ExtendFeUser
    * @inject
    */
    protected $ExtendFeUser;

    /**
    * action show
    *
    * @param \Mmmusiker\MmMusiker\Domain\Model\ErweiterteInfos $uid
    * @return void
    */
    public function showAction(\Mmmusiker\MmMusiker\Domain\Model\ErweiterteInfos $uid)
    {

    $temp = $this->request->getArgument('uid');
    $user = $this->ExtendFeUser->findByUid($temp);
    $this->view->assign('feuser',$user);
    }

    [/code]

    Domain/Model/ExtendFeUser.php:
    [code]…
    /**
    * fachgebiete
    *
    * @var string
    */
    protected $fachgebiete;

    /**
    * @param string $fachgebiete
    */
    public function getfachgebiete() {
    return $this->fachgebiete;
    }

    /**
    * @param string $fachgebiete
    */
    public function setfachgebiete($fachgebiete) {
    $this->fachgebiete = $fachgebiete;
    }

    [/code]

    TCA/Overrides/fe_users.php
    [code]…
    'fachgebiete' => [
    'exclude' => false,
    'label' => 'Fachgebiete',
    'config' => [
    'type' => 'select',
    'renderType' => 'selectMultipleSideBySide',
    'items' => [
    ['', 0],
    ],
    'foreign_table' => 'tx_musiker_fachgebiete',
    'MM' => 'tx_musiker_erweiterteinfos_fachgebiete_mm',
    'foreign_table_where' => 'ORDER BY tx_musiker_fachgebiete.title',
    'size' => 5,
    'minitems' => 0,
    'maxitems' => 10,
    ]
    ],
    ...
    [/code]

    ext_typoscript_setup.typoscript
    [code]config.tx_extbase {
    persistence {
    classes {

    Mmmusiker\MmMusiker\Domain\Model\ErweiterteInfos {
    mapping {
    tableName = fe_users
    recordType = Tx_MmMusiker_ErweiterteInfos
    }
    }

    Mmmusiker\MmMusiker\Domain\Model\Fachgebiete {
    mapping {
    tableName = tx_musiker_fachgebiete
    recordType = Tx_MmMusiker_Fachgebiete
    }
    }

    [/code]

    Edit: Irgendwie scheint die Code-Formatierung hier nicht mehr so ganz zu funktionieren :/


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2852 Beiträge
    105 Hilfreiche Beiträge
    11. 06. 2019, 13:39

    Dein Problem liegt im Model:
    Du definierst $fachgebiete als String - und damit greift keine "Magie" von Extbase. $fachgebiete ist jedoch (für Extbasse) ein Repository, in dem sich Fachgebiet-Objekte befinden. Wenn Du im Model also stattder String-Definition als Datentyp \TYPO3\CMS\Extbase\Persistence\ObjectStorage<Mmmusiker\MmMusiker\Domain\Model\Fachgebiete> verwendest (und *alle* Caches löschst), dann sollten unter {feuser.fachgebiete} die Fachgebit-Objekte erscheinen - ganz ohne weiteres Zutun.

    Ein ganz nettes Tutorial dazu hat Anja vor längerer Zeit geschrieben:
    http://www.typoblog.de/teil-5-extension-entwicklung-mit-typo3-extbase-fluid/

  • 1