Zum Inhalt springen

Email Adresse von Feuser ermitteln

Erstellt am 22. Juli 2011 · 7 Antworten · letzte Antwort am 9. September 2011

Tags: Frontend-Benutzer, Frage

oliver.​christ ·

Hallo,
ich versuche zur Zeit über eine ID die Emailadresse eines Frontend Users zu ermitteln.
Also die ID habe ich bereits, aber wie bekomme ich in Extbase nun am elegantesten das dazugehörige Objekt?

Gruß Olli

oliver.​christ ·

Mein derzeitiger Ansatz ist folgender:

In meinem Controller versuche ich ein Frontenduser Repository zu erstellen

/**
 * @var Tx_Extbase_Domain_Repository_FrontendUserRepository
 */
protected $userRepository;

/**
 * @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository
 * @return void
 */
public function injectUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {
    $this->userRepository = $userRepository;
}

In meiner Action übergebe ich dann erst mal mit einer hart verdrateten ID den user meinem View.

$user = $this->userRepository->findByUid(6);
$this->view->assign('user', $user);

Dabei erhalte ich dann die Fehlermeldung "Call to a member function findByUid() on a non-object in", woraus ich schließe, daß schon bei meiner Injection irgendwas schief läuft.
Für jede Idee bin ich dankbar. Muss ich ev. mit initializeAction arbeiten? Suche ich bei google unter "typo3 inject Tx_Extbase_Domain_Repository_FrontendUserRepository extbase" erhalte ich gerade mal 7 Einträge.

Gruß Olli

oliver.​christ ·

Ah ich glaube ich habe es gelöst, ich mußte bei den Usern noch den "Record Type" auf "Tx_Extbase_Domain_Model_FrontendUser" ändern.

sönke ·

Hallo Oliver,

ich habe das gleiche Problem. Leider habe ich deine Lösung nicht verstanden (bin neu in extbase).Würde mich freuen wenn du mir helfen könntest.

oliver.​christ ·

Hi Sönke,
wo genau hängst Du denn?
Ansonsten geht es ev. noch einfacher mit

$row = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
    'email',
    'fe_users',
    'uid = '. t3lib_div::_GP('aid')
);
echo $row['email'];

über

t3lib_div::_GP('aid')

hole ich mir die uid des users, ev. löst Du das anders.

Gruß Olli

sönke ·

Hallo Oliver,

ich habe nahezu identischen Code geschrieben wie du oben. Ich erhalte auch die Fehlermeldung :"Call to a member function findByUid() on a non-object in". Wie ich verschiedenen Fundstellen entehme ist das auch der Weg, den extbase eigentlich anbietet. Mir geht es halt darum mit extbase vertrauter zu werden. Ansonsten ist klar daß ich auch mit einer SQL-Abfrage die Userdaten erhalten kann.

Was mich interessiert was meinst du mit "Record Type" auf "Tx_Extbase_Domain_Model_FrontendUser ändern".
Ich hatte gehofft daß du einen Weg gefunden hast wie der Code den du oben geschrieben hast funktioniert.

Die UserID hole ich mit $GLOBALS['TSFE']->fe_user->user['uid'].

Hierr nochmal mein Code:

public $frontendUserRepository;
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $frontendUserRepository) {
         $this->frontendUserRepository = $frontendUserRepository;
     }	
     
public function foo(){
	$user = $this->frontendUserRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']);			
	$feuserName = $user->getUsername();
}

Grüße Sönke

oliver.​christ ·

Hi Sönke,
dann gehe mal auf einen Feuser im Backend. Dort auf den Tab "Erweitert". Da gibt es dann ein Dropdown "Record Type" bei welchem ich "Tx_Extbase_Domain_Model_FrontendUser" auswählen kann. Danach funktionierte meine Variante.

Gruß Olli