[TYPO3-UG Italy] Aggiungere un fe_group in fase di creazione di un fe_user

Mauro Lorenzutti mauro.lorenzutti at webformat.com
Mon Mar 10 16:52:53 CET 2014


Ciao Gianpaolo,

ad un utente di frontend possono essere associati N gruppi di frontend, 
la relazione è molti a molti, non 1:1.
Prova a sostituire il codice seguente:

$user->setUsergroup($groupObj);

con

$user->addUsergroup($groupObj);

Ciao,
-- 

Mauro Lorenzutti

CTO / Software Architect
mauro.lorenzutti at webformat.com
Tel.   +39-0427-926.389

WEBFORMAT srl -- www.webformat.com
Via Mecenate, 76 - 20138 MILANO
Corte Europa, 12 - 33097 SPILIMBERGO (PN)

*** TYPO3 Certified Integrator *** - *** Magento Certified Developer ***




Il 10/03/2014 16:17, Gianpaolo Scrigna ha scritto:
> Ciao a tutti.
> Sto sviluppando una estensione personalizzata per typo3 > 6.1 con extbase.
> Tra le varie cose, crea un nuovo fe_user in base ai dati ricevuti da una
> form.
> Tutto bene finchè non tento di assegnargli un fe_group predefinito.
> Ecco il repository:
>
> class WizardRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
> /**
>       * frontEndUserRepository
>       *
>       * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
>       * @inject
>       */
>      protected $frontEndUserRepository;
>
>      /**
>       * frontEndUserGroup
>       *
>       * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserGroupRepository
>       * @inject
>       */
>      protected $frontEndUserGroupRepository;
>
>      /**
>       * persistence manager
>       *
>       * @var \TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface
>       * @inject
>       */
>      protected $persistenceManager;
>
>      /**
>       * instanzia la sessione
>       *
>       * @return
>       */
>      public function __construct() {
>          session_start();
>          parent::__construct();
>      }
>
>      ... altri metodi ...
>
>      public function addFeUser($array, $settings) {
>
>              $user = new $this->frontEndUserRepository;
>
>              $user->setEmail($args['p-email']);
>              $user->setUsername($args['p-email']);
>              $user->setName($args['p-nome']);
>              ...
>              $groupObj = $this->frontEndUserGroupRepository->findOneByUid(2);
>              $user->setUsergroup($groupObj);
>
>              $add = $this->frontEndUserRepository->add($user);
>
>              $this->persistenceManager->persistAll();
>
>              return $user;
>      }
>
> Commentando la riga $user->setUsergroup($groupObj); l'utente viene
> correttamente scritto a DB e restituito dal metodo, invece tentando di
> assegnargli il gruppo ottengo l'errore
>
> *#1: PHP Catchable Fatal Error: Argument 1 passed to
> TYPO3\CMS\Extbase\Domain\Model\FrontendUser::setUsergroup() must be an
> instance of TYPO3\CMS\Extbase\Persistence\ObjectStorage, instance of
> TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup given, called in
> /home/www/mydir/typo3conf/ext/myext/Classes/Domain/Repository/WizardRepository.php
> on line 191 and defined in
> /home/letsjump/www/0-LIBS/typo3/typo3_src-6.1.7/typo3/sysext/extbase/Classes/Domain/Model/FrontendUser.php
> line 200*
>
> Dove sbaglio? Qualcuno ha esperienza nell'instanziare oggetti con
> objectManager e namespaces? In giro trovo poca documentazione e molto
> confusa.
>
> Grazie in anticipo!
> _______________________________________________
> TYPO3-UG-Italy mailing list
> TYPO3-UG-Italy at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-ug-italy





More information about the TYPO3-UG-Italy mailing list