Salut !!

Question bête, mais pourquoi ne pas utilise sfDoctrineGuardPlugin pour gérer
tes utilisateurs ? Il intègre directement tout ce qu'il faut pour gérer les
associations multiples entre users / groups et permissions.

Le 24 mars 2011 10:59, Cyril FLIELLER <[email protected]> a écrit :

> Ouais, je l'ai lu ce tutorial, mais j'ai vraiment du mal avec les
> formulaires. Quelqu'un peut-il m'expliquer un truc simple. J'ai le schéma
> suivant :
>
> CcGroup:
>   columns:
>     is_virtual:     { type: boolean, notnull: true, default: 0 }
>     label:          { type: string(255), notnull: true }
>
> CcMemberGroup:
>   columns:
>     person_id:      { type: integer, primary: true }
>     group_id:       { type: integer, primary: true }
>   relations:
>     CcPerson:        { onDelete: CASCADE, local: person_id, foreign: id,
> foreignAlias: CcMembersGroup }
>     CcGroup:         { onDelete: CASCADE, local: group_id, foreign: id,
> foreignAlias: CcMemberGroups}
>
> CcPerson:
>   columns:
>     email:          { type: string(255), notnull: true, email: true,
> unique: true }
>     lastname:       { type: string(255), notnull: true }
>     firstname:      { type: string(255), notnull: true }
>     gender:         { type: integer(1), notnull: true }
>     arrivaldate:    { type: timestamp, notnull: true }
>     departuredate:  { type: timestamp }
>
> À partir de là, je veux disposer d'un formulaire pour créer un utilisateur
> et lui attribuer un ou plusieurs groupes directement (la possibilité de
> créer un groupe via ce formulaire est complètement en option).
>
> J'ai donc créé un formulaire CcPersonFullForm qui étend le formulaire
> CcPersonForm.
>
> CcPersonForm est bidon :
>
> class CcPersonForm extends BaseCcPersonForm
> {
>   public function configure(){
>     parent::setup();
>     $gender = array(
>         0 => "Homme",
>         1 => "Femme"
>       );
>       $this->setWidget('gender',new sfWidgetFormSelect(array('choices' =>
> $gender)));
>   }
> }
>
> Maintenant CcPersonFullForm, c'est là que je pèche, j'ai l'impression que
> ce n'est pas propre :
>
> class CcPersonFullForm extends CcPersonForm{
>   public function configure(){
>     parent::configure();
>
>     $this->setWidget('membergroup_list', new
> sfWidgetFormDoctrineChoice(array('model' => 'CcGroup', 'multiple' =>
> true)));
>     $this->setValidator('membergroup_list', new
> sfValidatorDoctrineChoice(array('model' => 'CcGroup', 'required' => true,
> 'multiple' => true)));
>
> }
>
> et ensuite que faut-il écrire dans les méthodes doSave et doUpdate ?
>
>
> *Cyril FLIELLER*
>
>
>
> Le 24 mars 2011 10:23, alex baron <[email protected]> a écrit :
>
> Il existe un tutorial sur les formulaires embarqués sur le site de symfony.
>> Il existe plusieurs types de formaulaires embarqués !
>> http://www.symfony-project.org/more-with-symfony/1_4/fr/06-Advanced-Forms
>>
>>
>> Alexandre Baron
>>
>>
>>
>>
>> Le 24 mars 2011 10:06, Cyril FLIELLER <[email protected]> a écrit
>> :
>>
>>>  Qu'appelles-tu embarquer les formulaires ?
>>>
>>> *Cyril FLIELLER*
>>>
>>>
>>>
>>> Le 24 mars 2011 10:03, Lélio ML <[email protected]> a écrit :
>>>
>>>  Alors tu peux faire ces traitements dans doUpdate() qui permet de
>>>> contrôler
>>>> comment sont remplis les champs.
>>>>
>>>> Mais sinon, ne devrais-tu pas embarquer les formulaires si tu traites
>>>> plusieurs Model (Table) dans ton formulaire ? Ce serait peut-être plus
>>>> propre, tu gèrerais mieux les doUpdate().
>>>>
>>>> -----Message d'origine-----
>>>> De : [email protected] [mailto:[email protected]]
>>>> De la
>>>> part de Cyril FLIELLER
>>>> Envoyé : jeudi 24 mars 2011 09:53
>>>> À : [email protected]
>>>> Objet : Re: [symfony-fr] [Form] function save()
>>>>
>>>> Mais dans ce formulaire, je ne permets pas à l'utilisateur de tout
>>>> remplir,
>>>> il y a des champs que je rempli au traitement du formulaire moi même.
>>>>
>>>> Cyril FLIELLER
>>>>
>>>>
>>>>
>>>>
>>>> Le 24 mars 2011 09:48, alex baron <[email protected]> a écrit :
>>>>
>>>>
>>>>        Il vaut mieux utliser la méthode doSave. De plus si tes relations
>>>> sont bien déclarées et tes objets identifiés dans la config du
>>>> formulaires,
>>>> symfony te fera la sauvegarde correctement.
>>>>        Alexandre Baron
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>        Le 24 mars 2011 09:32, Cyril FLIELLER <[email protected]>
>>>> a
>>>> écrit :
>>>>
>>>>
>>>>                Je n'arrive pas à comprendre comme sauvegarder les
>>>> données
>>>> d'un formulaire dans la database avec doctrine. Mon formulaire ne
>>>> contient
>>>> pas que les informations d'une seule table, mais de plusieurs, je dois
>>>> donc
>>>> traiter mes données afin de créer les (4) enregistrements :
>>>>
>>>>                public function save($con = null){
>>>>                    try{
>>>>                      // ajout agent
>>>>                      $curAgent = new CcPerson();
>>>>                      $curAgent->setFirstname($this->values['firstname'])
>>>>                              ->setLastname($this->values['lastname'])
>>>>                              ->setGender($this->values['gender'])
>>>>                              ->setEmail($this->values['email'])
>>>>
>>>>  ->setArrivaldate($this->values['arrivaldate'])
>>>>
>>>> ->setDeparturedate($this->values['departuredate'])
>>>>                              ->save($con);
>>>>
>>>>                      $curAgentId = $curAgent->getId();
>>>>
>>>>                      // member group
>>>>                      foreach($this->values['membergroup_list'] as
>>>> $curGroupId){
>>>>                        $curMG = new CcMemberGroup();
>>>>                        $curMG->setPersonId($curAgentId);
>>>>                        $curMG->setGroupId($curGroupId);
>>>>                        $curMG->save($con);
>>>>                        unset($curMG);
>>>>                      }
>>>>
>>>>                      // solde congé
>>>>                      $congesCredit = new CcCredit();
>>>>
>>>> $congesCredit->setYear($this->values['exerciceConges'])
>>>>                        ->setValue($this->values['creditConges'])
>>>>                        ->setPersonId($curAgentId)
>>>>                        ->setAbsencetypeId(1)
>>>>                        ->setCcomment("Arrivée au laboratoire")
>>>>                        ->setCreatedAt(date('Y'))
>>>>                        ->save($con);
>>>>
>>>>                      // solde fractionnement
>>>>                      $fracCredit = new CcCredit();
>>>>
>>>> $fracCredit->setYear($this->values['exerciceFractionnement'])
>>>>                        ->setValue($this->values['creditFractionnement'])
>>>>                        ->setPersonId($curAgentId)
>>>>                        ->setAbsencetypeId(2)
>>>>                        ->setCcomment("Arrivée au laboratoire")
>>>>                        ->setCreatedAt()
>>>>                        ->save($con);
>>>>
>>>>                      $con->commit();
>>>>                    }
>>>>                    catch (Exception $e){
>>>>                      $con->rollBack();
>>>>                      throw $e;
>>>>                    }
>>>>
>>>>                    return $curAgent;
>>>>                  }
>>>>
>>>>                Mais j'ai des erreurs !
>>>>
>>>>
>>>>                Cyril FLIELLER
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>                --
>>>>                Vous recevez ce message, car vous êtes abonné au groupe
>>>> Google Groupes Symfony-fr.
>>>>                Pour envoyer un message à ce groupe, adressez un e-mail à
>>>> [email protected].
>>>>                Pour vous désabonner de ce groupe, envoyez un e-mail à
>>>> l'adresse [email protected]
>>>> <mailto:symfony-fr%[email protected]> .
>>>>                 Pour plus d'options, consultez la page de ce groupe :
>>>> http://groups.google.com/group/symfony-fr?hl=fr
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>        --
>>>>        Vous recevez ce message, car vous êtes abonné au groupe Google
>>>> Groupes Symfony-fr.
>>>>        Pour envoyer un message à ce groupe, adressez un e-mail à
>>>> [email protected].
>>>>        Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
>>>> [email protected]
>>>> <mailto:symfony-fr%[email protected]> .
>>>>         Pour plus d'options, consultez la page de ce groupe :
>>>> http://groups.google.com/group/symfony-fr?hl=fr
>>>>
>>>>
>>>>
>>>> --
>>>> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
>>>> Symfony-fr.
>>>> Pour envoyer un message à ce groupe, adressez un e-mail à
>>>> [email protected].
>>>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
>>>> [email protected].
>>>> Pour plus d'options, consultez la page de ce groupe :
>>>> http://groups.google.com/group/symfony-fr?hl=fr
>>>>
>>>>
>>>> --
>>>> Vous recevez ce message, car vous êtes abonné au groupe Google
>>>> Groupes Symfony-fr.
>>>> Pour envoyer un message à ce groupe, adressez un e-mail à
>>>> [email protected].
>>>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
>>>> [email protected].
>>>> Pour plus d'options, consultez la page de ce groupe :
>>>> http://groups.google.com/group/symfony-fr?hl=fr
>>>>
>>>>
>>>  --
>>> Vous recevez ce message, car vous êtes abonné au groupe Google
>>> Groupes Symfony-fr.
>>> Pour envoyer un message à ce groupe, adressez un e-mail à
>>> [email protected].
>>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
>>> [email protected].
>>> Pour plus d'options, consultez la page de ce groupe :
>>> http://groups.google.com/group/symfony-fr?hl=fr
>>>
>>
>>  --
>> Vous recevez ce message, car vous êtes abonné au groupe Google
>> Groupes Symfony-fr.
>> Pour envoyer un message à ce groupe, adressez un e-mail à
>> [email protected].
>> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
>> [email protected].
>> Pour plus d'options, consultez la page de ce groupe :
>> http://groups.google.com/group/symfony-fr?hl=fr
>>
>
>  --
> Vous recevez ce message, car vous êtes abonné au groupe Google
> Groupes Symfony-fr.
> Pour envoyer un message à ce groupe, adressez un e-mail à
> [email protected].
> Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
> [email protected].
> Pour plus d'options, consultez la page de ce groupe :
> http://groups.google.com/group/symfony-fr?hl=fr
>



-- 
Jérémy LEHERPEUR
[email protected]

-- 
Vous recevez ce message, car vous êtes abonné au groupe Google 
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail 
à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse 
[email protected].
Pour plus d'options, consultez la page de ce groupe : 
http://groups.google.com/group/symfony-fr?hl=fr

Répondre à