Hallo Andreas,

eine Möglichkeit: Deaktiviere die Extension einmal und aktiviere sie wieder, sonst findet TYPO3 möglicherweise die neu erstellte Service-Klasse nicht.

Viele Grüße

Alex

Am 26.11.2016 um 19:08 schrieb Andreas Reimund:
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
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an