Zum Inhalt springen

Extbase fe_user referiert andere fe_user -> Ausgabe

Erstellt am 2. Januar 2021 · 1 Antwort · letzte Antwort am 4. Januar 2021

Tags: Frontend-Benutzer, Frage

Eumolp ·

Ein guten neues Jahr allen!

[das gab ich ursprünglich/versehentlich bei TypoScrip gepostet, ist jetzt nicht als doppelt post zu werten]

Ein FeUser soll Kontrolle über andere FeUser haben.
in meiner EXT hab ich Tabelle/TCA für fe_user aufgebohrt.
BE ist alles klar:Man wählt z.B. die user aus z.B. user 19 und 3.
(keine 1:n|mm-relation - seh ich keinen Grund oder kanns dann einfacher werden?)
in der DB stehen im Feld fe_users.tx_idp_therapistof=19,3
kann ich meiner EXT via fluid auch ausgeben via
$this->view->assign('feuser', $GLOBALS['TSFE']->fe_user->user);
und dann im fluid {feuser.first_name}
So weit, so gut.

Mit feuser.tx_idp_therapistof bekomme ich halt nur die id als string: 19,3
na, steht halt auch so in der DB.

Klaro: ich hätte gerne die kompletten fe_user-record in meinem feuser-object.

Habe mir ein Modell/Repository gebaut, hab mit
config.tx_extbase diverse Objecte und persistance mapping hantiert.
Hab dinge komponiert und wieder verworfen, weil ich nicht weiß wie ich auf den Systemdatensatz zugreife.

Hab im core schon gestöbert ob ich was finde, aber das komm ich nicht mal zum bis zum model (ich les dennoch weiter)).

Hier etwas Code von mir, in dem ich bereits die Übersicht verloren habe.
setup:

config.tx_extbase.objects {
  TYPO3\CMS\Extbase\Domain\Model\FeUser {
  className = Tmd\Idp\Domain\Model\FeUser
} # brauch ich das überhaupt?
config.tx_extbase.persistence.classes {
  TYPO3\CMS\Extbase\Domain\Model\FeUser {
  mapping {
    tableName = fe_users
    columns { #extbase.mapOnProperty => fe_users
      username.mapOnProperty = username
      ...
      uid.mapOnProperty = uid
}..alle zu..}

Model:

use TYPO3\CMS\Extbase\Domain\Model\FrontendUser; // nötig?
class FeUser extends \TYPO3\CMS\Extbase\Domain\Model\FrontendUser {
  protected $username = null;
  protected $uid=0;
  public function getUid () { return $this->uid; }
  public function getUsername () { return $this->username; }
}

Repository:

class FeUserRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
  public function findByUsername($uid){
    debug("HIER"); // wird nie aufgerufen.
  }
}

controller:
$this->frontendUserRepository->findByUsername($theId)
-> ERROR: "Call to a member function findByUsername() on null"

Den Fehler interpretiere ich als: "in meinem Repository ist nix", aber das repo ist doch da!?
Aber die methode findyByUsername wird ja auch nie aufgerufen?

Ich hoffe ich hab nicht zu viel Code weggelassen.

google ich falsch? Bestimmt.
Ich mach das, was ich die letzten 2 Tage gemacht habe: weiter Googeln auf der Suche nach Erleuchtung.
Wäre schön, wenn mir jemand - erfahrener als ich - einen Tipp gibt.

Danke.

Julian.​Hofmann ·
Eumolp schrieb

Den Fehler interpretiere ich als: "in meinem Repository ist nix", aber das repo ist doch da!?

Diese Interpretation ist falsch. Der Fehler sagt "Ich habe kein Repository, in dem ich diese Methode ausführen kann". Der Controller "kennt" das Repository also nicht, obwohl es als Datei existiert.

Auf welche Art injectest Du Dein Repository?