[Frage] Daten aus fe_users in eigener Extension in TYPO3 7.x ausgeben

  • maggo maggo
    R2-D2
    0 x
    93 Beiträge
    0 Hilfreiche Beiträge
    22. 10. 2015, 17:41

    Hallo,

    ich habe eine Extension mit dem Extension Builder in TYPO3 7.5 angelegt, bei der ich in der Tabelle "Artikel" ein Feld "FrontendUser" nutze, welches auf fe_users verweist.
    Ich habe mich dabei an [url]http://www.typo3.net/forum/thematik/zeige/thema/113127/seite/2/[/url] und [url]http://www.typo3.net/en/forum/thematik/zeige/thema/119777/[/url]gehalten.
    Im Backend funktioniert das auch alles wunderbar - ich kann für die Artikel Benutzer aus fe_users auswählen und abspeichern.
    Jetzt möchte ich gerne in der Frontenddarstellung der Listenansicht zu jedem Artikel auch noch Daten aus dem zugewiesenen fe_user ausgeben.
    [code]{artikel.benutzer.name} und {artikel.benutzer.company}[code]funktionieren da aber nicht.

    U.a. Folgendes habe ich in den Dateien zu stehen:

    setup.txt

    1. persistence {storagePid = {$plugin.tx_usertest_anzeigen.persistence.storagePid}
    2. classes{
    3. TYPO3\CMS\Extbase\Domain\Model\FrontendUser {
    4. subclasses {
    5. Tx_Usertest_FrontendUser = Mein\Usertest\Domain\Model\FrontendUser
    6.  
    7. }
    8. }
    9. Mein\Usertest\Domain\Model\FrontendUser {
    10. mapping {
    11. tableName = fe_users
    12. recordType = Tx_Extbase_Domain_Model_FrontendUser
    13. }
    14. }
    15. }
    16. }

    ext_typoscript_setup.txt

    1. config.tx_extbase{
    2. persistence{
    3. #war mal ein Test - damit geht es aber auch nicht: storagePid = 2
    4. classes{
    5.  
    6. NorthinMotion\Usertest\Domain\Model\FrontendUser {
    7. mapping {
    8. tableName = fe_users
    9. recordType = Tx_Usertest_FrontendUser
    10. }
    11. }
    12.  
    13. }
    14. }
    15. }

    Model/frontendUser.php

    1. class FrontendUser extends \TYPO3\CMS\Extbase\Domain\Model\FrontendUser {}

    Repository/FrontendUserRepository.php

    1. class FrontendUserRepository extends \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository {}

    Ansonsten steht in der Repository nichts drin - also keine get- und set-Methoden.

    in der ArtikelController.php

    1. class ArtikelController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
    2. /**
    3. * artikelRepository
    4. *
    5. * @var \Mein\Usertest\Domain\Repository\ArtikelRepository
    6. * @inject
    7. */
    8. protected $artikelRepository = NULL;
    9.  
    10. /**
    11. * action list
    12. *
    13. * @return void
    14. */
    15. public function listAction() {
    16. $artikels = $this->artikelRepository->findAll();
    17. $this->view->assign('artikels', $artikels);
    18.  
    19. $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
    20. $feUserGroupRepository = $this->objectManager->get('TYPO3\CMS\Extbase\Domain\Repository\FrontendUserGroupRepository');
    21. }

    Wie bekomme ich jetzt z.B. {artikel.benutzer.name} in das FLUID-Template? Was haeb ich übersehen bzw. vergessen?


  • 1
  • harald1972 harald197...
    Sternenflotten-Admiral
    0 x
    198 Beiträge
    13 Hilfreiche Beiträge
    25. 10. 2015, 18:49

    Hallo,

    wozu leitest du einen FrontendUser und ein FrontendUserRepository ab?
    Ich kann hier nicht erkennen, daß du etwas anderes machen willst, als die \TYPO3\CMS\Extbase\Domain\Model\FrontendUser und \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository schon können.
    Wenn du genau das machen willst, wofür der TYPO3\...FrontendUser bzw. das Repository gemacht sind, dann nutze sie doch ganz einfach so wie sie sind. Dann musst du auch keine Tabellen und auch keine Klassen mappen.

    Diese Frage ist leicht zu beantworten:

    Wie bekomme ich jetzt z.B. {artikel.benutzer.name} in das FLUID-Template?

    1. Vorausgesetzt, artikel ist ein Objekt der Klasse Artikel, dann muss diese Klasse eine Methode getBenutzer() haben.
    2. Ich gehe jetzt davon aus, daß dieser Benutzer ein FrontendUser ist, dann muss dessen Klasse eine getName()-Methode haben (das ist gegeben, wenn du den \TYPO3\...FrontendUser verwendest)

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2854 Beiträge
    106 Hilfreiche Beiträge
    28. 10. 2015, 09:45

    Vielleicht ist es nur durch Aufbereitung fürs Forum, aber in den Codeausschnitten arbeitest Du mit verschiedenen Namespaces:

    \Mein\Usertest\Domain\Model\FrontendUser vs. \NorthinMotion\Usertest\Domain\Model\FrontendUser

  • 1