[TYPO3-UG Denmark] Extbase: få alle fe_users som er medlem af fe_groups

Lasse Enø Jensen lasse_enoe at hotmail.com
Wed Aug 6 13:25:43 CEST 2014


Hej igen
Så lykkes det mig at få det til at virke - er dog ikke helt tilfreds endnu med min FrontendUserGroup->getUsers().

## Jeg har lavet følgende funktion i min FrontendUserRepository:
public function findByFrontendUserGroup(FrontendUserGroup $userGroup) {
    $query = $this->createQuery();
    $query->matching($query->contains('usergroup', $userGroup->getUid()));
    $query->setOrderings(array(
        'company' => QueryInterface::ORDER_ASCENDING
    ));
    return $query->execute();
}

## I min FrontendUserGroup har jeg følgende funktion:
public function getUsers() {
    $users = $this->frontendUserRepository->findByFrontendUserGroup($this);
    foreach($users as $user) $this->users->attach($user);
    return clone $this->users;
}

## '$this->frontendUserRepository' er defineret via. nedenstående:
/**
 * @var \LEJ\ListFeUsers\Domain\Repository\FrontendUserRepository
 * @inject
 */
protected $frontendUserRepository;


Som sagt er jeg ikke tilfreds med min FrontendUserGroup->getUsers() da jeg ikke mener det er det rigtige sted at anbringe denne stump kode da jeg kan se at det kan give lidt performancemessige problemer mm. blandt andet.

Hvor vil det være mest korrekt at lægge denne slags kode / opkobling til repository.

Jeg har lagt den foreløbige kode på github:
https://github.com/t3u/list_fe_users

De to filer der er omtalt kan findes her:
FrontendUserRepository https://github.com/t3u/list_fe_users/blob/master/Classes/Domain/Repository/FrontendUserRepository.php 
FrontendUserGroup https://github.com/t3u/list_fe_users/blob/master/Classes/Domain/Model/FrontendUserGroup.php 

Jeg håber meget der er nogen der vil pege mig i den rigtige retning så jeg kan lære at arbejde med extbase på den rigtige måde:)


> From: lasse_enoe at hotmail.com
> To: typo3-ug-denmark at lists.typo3.org
> Date: Wed, 16 Jul 2014 21:24:13 +0200
> Subject: [TYPO3-UG Denmark] Extbase: få alle fe_users som er medlem af fe_groups
> 
> Hej igen
> 
> Jeg sidder og leger lidt med extbase og har extended
> \TYPO3\CMS\Extbase\Domain\Model\FrontendUser og
> \TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup uden ekstra felter (2
> tomme modeller).
> 
>  
> 
> Jeg har lavet en lille controller med en listAction der assigner en bruger
> til templaten:
> 
> public function listAction() {
> 
>  
> $this->view->assign('user',$this->frontendUserRepository->findByUid(1));
> 
> }
> 
>  
> 
> Dette virker glimrende og jeg kan i min fluid template lave en <f:for
> each=”{user.usergroup}” as=”usergroup”> der så lister alle de brugergrupper
> bruger:1 er medlem af.
> 
>  
> 
> Nu vil jeg så gerne gøre det modsat – assigne en usergroup til templaten og
> liste alle dens brugere.
> 
>  
> 
> Jeg har i min \LEJ\ListFeUsers\Domain\Model \FrontendUserGroup lavet
> følgende:
> 
> <?php
> 
> namespace LEJ\ListFeUsers\Domain\Model;
> 
> class FrontendUserGroup extends
> \TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup {
> 
>     /**
> 
>      * @var
> \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\LEJ\ListFeUsers\Domain\Model\F
> rontendUser>
> 
>      */
> 
>     protected $user;
> 
>  
> 
>     /**
> 
>      * Constructs a new Frontend User Group
> 
>      *
> 
>      * @param string $title
> 
>      */
> 
>     public function __construct($title = '') {
> 
>         parent::__construct($title);
> 
>         $this->user = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
> 
>     }
> 
>  
> 
>     /**
> 
>      * Adds a user to the frontend user group
> 
>      *
> 
>      * @param \LEJ\ListFeUsers\Domain\Model\FrontendUser $user
> 
>      * @return void
> 
>      * @api
> 
>      */
> 
>     public function addUser(\LEJ\ListFeUsers\Domain\Model\FrontendUser
> $user) {
> 
>         $this->subgroup->attach($user);
> 
>     }
> 
>  
> 
>     /**
> 
>      * Removes a user from the frontend user group
> 
>      *
> 
>      * @param \LEJ\ListFeUsers\Domain\Model\FrontendUser $user
> 
>      * @return void
> 
>      * @api
> 
>      */
> 
>     public function removeUser(\LEJ\ListFeUsers\Domain\Model\FrontendUser
> $user) {
> 
>         $this->user->detach($user);
> 
>     }
> 
>  
> 
>     /**
> 
>      * Returns the users. Keep in mind that the property is called "user"
> 
>      * although it can hold several users.
> 
>      *
> 
>      * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage An object
> storage containing the users
> 
>      * @api
> 
>      */
> 
>     public function getUser() {
> 
>         return $this->subgroup;
> 
>     }
> 
> }
> 
>  
> 
>  
> 
>  
> 
> I min FrontendUserRepository har jeg lavet følgende:
> 
> <?php
> 
> namespace LEJ\ListFeUsers\Domain\Repository;
> 
> class FrontendUserRepository extends
> \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository {
> 
>     /**
> 
>      * @param \LEJ\ListUsers\Domain\Model\FrontendUserGroup
> $frontendUserGroup
> 
>      * @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
> 
>      */
> 
>     public function
> findByFrontendUserGroup(\LEJ\ListUsers\Domain\Model\FrontendUserGroup
> $frontendUserGroup) {
> 
>         $query = $this->createQuery();
> 
>         $query->matching($query->contains('usergroup',$frontendUserGroup));
> 
>         return $query->execute();
> 
>     }
> 
> }
> 
>  
> 
>  
> 
>  
> 
> Jeg føler at jeg mangler noget, en sammenkobling mellem
> FrontendUserGroup->user & FrontendUserRepository->findByFrontendUserGroup.
> 
> Kan heller ikke finde ud af om min property ’user’ skal være nævnt i
> fe_groups TCA (Den kommer ikke med i en <f:debug>{usergroup}</f:debug>)?
> 
> Har læst lidt løse kommentar her og der omkring initStorageObjects method,
> er det denne jeg mangler og i så fald, hvor kan jeg læse noget mere
> dybdegående om denne method/funktion?
> 
>  
> 
> Må i alle have en forsat god onsdag aften, happy coding:)
> 
>  
> 
> _______________________________________________
> TYPO3-UG-Denmark mailing list
> TYPO3-UG-Denmark at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-ug-denmark
 		 	   		  


More information about the TYPO3-UG-Denmark mailing list