2017-06-08 4 views
1

私はTYPO3バージョン7.6.18を持っています。私はコードでユーザーを作成しようとしています。ユーザグループを追加するには?私はそれがユーザーグループオブジェクトを作成する必要があることがわかります。TYPO3 set fe_userグループ

$this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); 
      $newUser = $this->objectManager->get('Fhk\\Feusersplus\\Domain\\Repository\\UserRepository'); 

$userModel = $this->objectManager>get('Fhk\\Feusersplus\\Domain\\Model\\User'); 

$userGroup = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); 

$userModel->setUsername("sdfdsfdsfs"); 
$userModel->setEmail($user_data['email']); 
$gender = 0; 
$password = rand(99999999,9999999999999); 
$userModel->setPassword($password); 

$userModel->setUsergroup($userGroup); 
$newUser->add($userModel); 

ユーザーグループを設定しなかったため、ユーザーがデータベースに追加しなかったと思います。私は自分のコードを修正しているが、それはデータベースにユーザーを追加does't

)私を助けてください:あなたはほぼ完了している

$this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); 
      $newUser = $this->objectManager->get('Fhk\\Feusersplus\\Domain\\Repository\\UserRepository'); 

       $userModel = $this->objectManager->get('Fhk\\Feusersplus\\Domain\\Model\\User'); 
       $userGroup = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserGroupRepository'); 

       $userGroup = $userGroup->findByUid(1); 
       $newUserGroup = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); 
       $newUserGroup->attach($userGroup); 

      $userModel->setUsername("sdfdsfdsfs"); 
       $userModel->setEmail($user_data['email']); 
       $gender = 0; 
       $password = rand(99999999,9999999999999); 
       $userModel->setPassword($password); 
       $userModel->setPid(3); 
       $userModel->setUsergroup($newUserGroup); 

       $newUser->add($userModel); 

答えて

3

。必要なユーザーグループを取得するにはUserGroupRepositoryが必要で、$userGroup->attach($yourUserGroup)を実行する必要があります。

+0

ありがとうございました。しかし、ユーザーはデータベースに追加しません、私は自分の投稿を更新しました。私を助けてくれますか? – Mikael

+0

作成および変更されたExtbaseオブジェクトは一時的なものです。 createAction()またはupdateAction()の内部にいない場合は、変更を手動で永続化する必要があります。 \ TYPO3 \ CMS \ Extbase \ Persistence \ Generic \ PersistenceManagerのインスタンスは、基本的にpersistAll()メソッドを呼び出す必要があります。 – j4k3

2

次のように試してみてください。

$this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); 
$newUser = $this->objectManager->get('Fhk\\Feusersplus\\Domain\\Repository\\UserRepository'); 

$userModel = $this->objectManager->get('Fhk\\Feusersplus\\Domain\\Model\\User'); 
$userGroup = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserGroupRepository'); 

$userGroup = $this->FrontendUserGroupRepository->findByUid(1); 

$userModel = new \Typo3\CMS\Extbase\Domain\Model\FrontendUser(); 

$userModel->setUsername("sdfdsfdsfs"); 
$userModel->setEmail($user_data['email']); 
$gender = 0; 
$password = rand(99999999,9999999999999); 
$userModel->setPassword($password); 
$userModel->setPid(3); 
$userModel->addUsergroup($userGroup); 

$this->FrontendUserRepository->add($userModel); 
関連する問題