Extbase - Zugriff auf die fe user Tabelle
http://www.derhansen.de/2012/06/zugriff-auf-frontend-user-tabelle-aus.html
http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html
Einleitung
Wir möchten die Daten der fe_users Tabelle, also die Frontenduser in unserer eigenen Extension verwenden. Extbase hat ein eigenes Domain Model und ein eigenes Repository um auf die Frontend User Tabelle (fe_users) zuzugreifen. Wenn man das Repository in seine eigene Extension injectet kann man die Daten der fe_users nutzen.
Die Tabelle fe_users wird auch von anderen Extensions um weitere Felder erweitert (z.B. sr_feuser_register). Diese Felder sind natürlich nicht im Model von extbase enthalten. Deshalb muß man sie nochmal separat behandeln. Man erweitert einfch sein eigenes Datenmodell einfach um diese Felder. So funktioniert das ganze.
Beispiel fe_users in eigener Extension nutzen
Übersicht
- fe_users-Repository per Dependency Injection zu Verfügung stellen
- Auslesen der Userdaten
Achtung: Extbase erweitert die fe_users und fe_groups um das Feld tx_extbase_type (Record Type) Ist dies nicht vorhanden gibt es nichts zurück. Lösung s.u.
fe_user Tabelle Injecten
Im Controller deiner Extension Ab 6.0
/**
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
* @inject
*/
protected $frontendUserRepository;
Old School (<4.7)
/**
* @var Tx_Extbase_Domain_Repository_FrontendUserRepository
*/
protected $userRepository;
/**
* Inject the user repository
*
* @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository
* @return void
*/
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {
$this->userRepository = $userRepository;
}
Userdaten holen
$user = $this->userRepository->findByUid($uid);
Problem: User werden nicht ausgegeben weil record type nicht gesetzt ist
Im TypoScript definiert Extbase
config.tx_extbase.persistence.classes {
Tx_Extbase_Domain_Model_FrontendUser {
mapping.recordType = Tx_Extbase_Domain_Model_FrontendUser
}
}
Im Mapping ist der recordType gesetzt d.h. es erwartet das bei einem fe_users Eintrag dieser Wert geetzt ist.