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
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
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
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.
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.
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
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
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
Hallo Oliver,
jetzt funktioniert es. Vielen Dank!
Grüße
Sönke