[TYPO3-UG Denmark] Extbase: få alle fe_users som er medlem af fe_groups
Lasse Enø Jensen
lasse_enoe at hotmail.com
Wed Jul 16 21:24:13 CEST 2014
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:)
More information about the TYPO3-UG-Denmark
mailing list