[TYPO3-mvc] Re: Create predefined fe_groups when activating extension

Genser typo3 at genser.eu
Mon Dec 7 11:44:11 CET 2015


I recently had a similar problem and wrote this function:

/**
 * @param string $frontendUserGroupTitle
 * @return \TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup
 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException
 */
private function getFrontendUserGroupByName(string $frontendUserGroupTitle) {
  if (0 == $this->frontendUserGroupRepository->countByTitle( $frontendUserGroupTitle )) {
    $fe_group = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
      '\\TYPO3\\CMS\\Extbase\\Domain\\Model\\FrontendUserGroup', $frontendUserGroupTitle
    );
    $fe_group->setPid( $this->settings['groups_PID'] ); // pageID where the group should be created
    $this->frontendUserGroupRepository->add( $fe_group );
    return $fe_group;
  } else {
    $fe_group = $this->frontendUserGroupRepository->findByTitle( $frontendUserGroupTitle );
    return $fe_group[0];
  }
}

It returns a frontendUserGroup (and creates it if it does not already exists) and you can use it like this, in your controller:
$feUserObj->addUsergroup( $this->getFrontendUserGroupByName( $feGroupTitle ) );
followed by:
$this->frontendUserRepository->update( $feUserObj );
$this->persistenceManager->persistAll();

Obviously you need to inject $frontendUserGroupRepository and $persistenceManager but it works for me. That way you don't need to insert data with a fixed UID (bad idea in my opinion).

Hope this helps.


More information about the TYPO3-project-typo3v4mvc mailing list