[Frage] femanager: Neues Feld in erweitertem fe_user wird in Edit-View nicht geladen TYPO3-Version: -

  • Tosta Tosta
    R2-D2
    0 x
    114 Beiträge
    0 Hilfreiche Beiträge
    13. 07. 2016, 15:41

    TYPO3-Version 7.6.9
    femanager-Version 2.5.0

    Hallo,

    ich habe für eine eigene Extension die Tabelle 'fe_user' und die Klasse '\In2code\Femanager\Domain\Model\User' erweitert, und zwar um ein Feld 'organisation'. Dabei bin ich der Anleitung unter „Best Practices“ in der femanager-Dokumentation gefolgt.

    Nun gibt es ein Problem beim Bearbeiten der Daten im Frontend. Bei neuen und bei geänderten User-Daten wird das Feld 'organisation' richtig abgespeichert. Wenn der entsprechende Satz aber später wieder in das Bearbeitungsformular des Views geladen wird, ist das Feld 'organisation' leer – obwohl in der Datenbank ein Wert gespeichert ist.

    Das habe ich herausgefunden: Der zuständige femanager-Controller weist in der editAction dem View den aktuellen User zu, und zwar als Objekt der Klasse 'In2code\Femanager\Domain\Model\User', also natürlich ohne 'organisation'.
    -
    class EditController extends AbstractController {
    ...

    public function editAction() {
    $this->view->assignMultiple([
    'user' => $this->user,
    'allUserGroups' => $this->allUserGroups
    ]);
    $this->assignForAll();
    }
    ...
    }
    -
    In „meiner“ Version des Controllers – vom femanager-Controller abgeleitet – lade ich darum denselben User noch einmal aus der Datenbank, allerdings als Objekt meiner User-Klasse, also mit 'organisation'. Das habe ich im Debugger verifziert. „Meinen“ User weise ich dann als aktuellen User zu und rufe danach die Parent-Funktion der editAction auf.
    -
    class EditController extends \In2code\Femanager\Controller\EditController {

    ...
    public function editAction() {
    $userUid = $this->user->getUid();
    $userRepository = $this->objectManager->get('MediaNova\\MnEvents\\Domain\\Repository\\UserRepository');
    $user = $userRepository->findByUid($userUid);
    $this->user = $user;
    parent::editAction();
    }
    ...
    }
    -
    Leider wird der Wert von 'organisation' nicht im View angezeigt (das Eingabefeld ist leer). Was fehlt noch?

    Danke für eure Hilfe.

    Tosta


  • 1
  • Tosta Tosta
    R2-D2
    0 x
    114 Beiträge
    0 Hilfreiche Beiträge
    14. 07. 2016, 15:15

    Die Lösung hab ich jetzt selbst gefunden: In der TCA-Definition war im 'showitem'-Eintrag das Feld 'organisation' nicht aufgeführt. Es heißt zwar '[b]show[/b]item', hat aber Auswirkungen bis in die Datenbankzugriffe…

    So funktioniert’s also:

    $GLOBALS['TCA']['fe_users']['types']['Tx_MnEvents_User']['showitem'] .= '
    ,--div--;LLL:EXT:mn_events/Resources/Private/Language/locallang_db.xlf:tx_mnevents_domain_model_user,
    [b]organisation[/b],
    ';

  • 1