[TYPO3-german] Extbase Service einbinden

Andreas Reimund andreas.reimund at online.de
Sat Nov 26 19:08:32 CET 2016


Guten Tag,

ich möchte über einen Service ein paar Funktionen einbinden, um vor dem 
Ausführen einiger Funktionen zu prüfen ob der Benutzer berächtigt ist daszu.
Hierzu habe ich einen Service erstellt aber es klappt irgendwie nicht. 
Wenn ich die Funktion direkt in den Controller schreibe, macht sie was 
sie soll. Wenn ich die gleich Funktion über den Service einbinde kommt 
folgender Fehler:

Call to a member function hasLoggedInFrontendUser() on a non-object in

Im folgenden ein Ausschnitt aus dem Controller und dem Service:

Classes/Service/AccessControlService.php

<?php
namespace AndreasReimund\Fsanmeldung\Service;

class AccessControlService implements \TYPO3\CMS\Core\SingletonInterface {
     public function hasLoggedInFrontendUser() {
         return $GLOBALS['TSFE']->loginUser === 1 ? TRUE : FALSE;
     }
}

Classes/Controller/ElternController.php

<?php
namespace AndreasReimund\Fsanmeldung\Controller;
class ElternController extends 
\TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
     /**
      * elternRepository
      *
      * @var \AndreasReimund\Fsanmeldung\Domain\Repository\ElternRepository
      * @inject
      */
     protected $elternRepository;
     /**
      * @var \AndreasReimund\Fsanmeldung\Service\AccessControlService
      * @inject
     */
     protected $accessControlService;
     /**
      * Eltern Uebersicht
      *
      * @param \AndreasReimund\Fsanmeldung\Domain\Model\Eltern $eltern
      * @param \AndreasReimund\Fsanmeldung\Domain\Model\Kind $kind
      * @return void
      */
     public function 
showAction(\AndreasReimund\Fsanmeldung\Domain\Model\Eltern $eltern) {

         if ($this->accessControlService->hasLoggedInFrontendUser() ) {
                 $this->addFlashMessage('Sie sind berachtigt', '', 
\TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
                 $this->redirect('confirm',NULL,NULL, 
array('eltern'=>$eltern));
         }
             else
             {
                 if($eltern->getReady()!=1){
         $eltern->setCalculation($eltern->getKind());
$this->objectManager->get('AndreasReimund\\Fsanmeldung\\Domain\\Repository\\ElternRepository')->update($eltern);

             $this->view->assign('eltern', $eltern);

             }
             else
             {
                 $this->addFlashMessage('Anmeldung wurde bereits 
abgeschlossen. Aenderungen sind nicht mehr moeglich!', '', 
\TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);
                 $this->redirect('confirm',NULL,NULL, 
array('eltern'=>$eltern));
             }

     }}

Ich komme nicht drauf warum er scheinbar keinen zugriff auf die Funktion 
bekommt.

Gruß Andreas


More information about the TYPO3-german mailing list