[Frage] Eingeloggten FE-User als Author verwenden (Festlegen des Authors beim Erstellen eines Eintrags) [Gelöst] TYPO3-Version: 6.2.30

  • 0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    27. 01. 2017, 20:48

    Hallo zusammen,

    in meiner Extension möchte ich gern beim Erstellen eines neuen Datensatzes über die "newAction" Funktion den aktuell im Frontend eingeloggten User als Author verwenden, ohne das dieser manuell ausgewählt werden muss.

    Die Kopplung des des Domänen-Objektes Author mit der fe_user Tabelle habe ich eingerichtet und dies funktioniert auch soweit. Übers Backend kann ich dem Datensatz ohne Probleme einen FE-User einem Datensatz (Event) der Extension zuweisen, aber im Frontend funktioniert dies leider nicht und ich komme nicht weiter.

    Die newAction Funktion meines Controller sieht so aus ...

    1. /**
    2. * action new
    3. *
    4. * @dontvalidate $event
    5. * @param \...\...\Domain\Model\Event $event
    6. * @return void
    7. */
    8. public function newAction(\...\...\Domain\Model\Event $Event = NULL) {
    9. $this->view->assign('event', $event);
    10. $event->setAuthor($this->authorRepository->findOneByUid($GLOBALS['TSFE']->fe_user->user['uid']));
    11.  
    12. }

    Über $GLOBALS['TSFE']->fe_user->user['uid'] wird ja die uid des eingeloggten Users ermittelt und über das setAuthor() müsste der Wert doch dann gesetzt werden.

    Hat hier jemand eine Idee warum es nicht funktioniert... !?

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    30. 01. 2017, 09:40 - Lösung

    Ich hab's vor ein paar Jahren so gemacht:

    1. public function newAction(\Vendor\MyPlugin\Domain\Model\Event $Event = NULL) {
    2. if ($GLOBALS['TSFE']->loginUser) {
    3. $feuserUid = intval($GLOBALS['TSFE']->fe_user->user['uid']);
    4. $feuser = $this->userRepository->findByUid($feuserUid);
    5. $Event->setAuthor($feuser);
    6. } else {
    7. $this->flashMessageContainer->add('Sie haben keine Berechtigung die Aktion auszuführen.');
    8. $this->redirect($actionName = 'list', $controllerName = 'Event');
    9. }
    10. }


  • 1
  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    30. 01. 2017, 09:40

    Ich hab's vor ein paar Jahren so gemacht:

    1. public function newAction(\Vendor\MyPlugin\Domain\Model\Event $Event = NULL) {
    2. if ($GLOBALS['TSFE']->loginUser) {
    3. $feuserUid = intval($GLOBALS['TSFE']->fe_user->user['uid']);
    4. $feuser = $this->userRepository->findByUid($feuserUid);
    5. $Event->setAuthor($feuser);
    6. } else {
    7. $this->flashMessageContainer->add('Sie haben keine Berechtigung die Aktion auszuführen.');
    8. $this->redirect($actionName = 'list', $controllerName = 'Event');
    9. }
    10. }

  • 0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    30. 01. 2017, 11:25

    Hallo jenses,

    habe es gerade mal ausprobiert und bekomme dann nur eine weiße Seite angezeigt, genauso wie bei meiner Variante. Keinen Plan warum das nicht funktioniert ... :-(((

  • Norman2k Norman2k
    Jedi-General
    0 x
    1657 Beiträge
    80 Hilfreiche Beiträge
    30. 01. 2017, 12:06

    Dann lass dir die Fehler ausgeben oder guck ins Error-Log deines Webservers, da sollten dann mehr Informationen stehen, was den Fehler verursacht

  • 0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    30. 01. 2017, 19:14

    Wenn ich das ErrorLog einschalte, bekomme ich die Fehlermeldung ...

    "#1: PHP Catchable Fatal Error: Argument 1 passed to ...\...\Domain\Model\Event::setAuthor() must be an instance of TYPO3\CMS\Extbase\Persistence\ObjectStorage, null given, called in /.../typo3conf/ext/eventmanagement/Classes/Controller/EventController.php on line 290 and defined in /.../typo3conf/ext/eventmanagement/Classes/Domain/Model/Event.php line 785"

    Habe schon alles mögliche versucht, aber nichts funktioniert....

  • 1