gender est plutôt de type boolean il me semble.
Normalement si ta relation fonctionne tu n'as pas besoin de redéclaré le
widget du group.
Je te conseillerai plutot d'aller voir BaseCcPersonForm; de copié la partie
configure et de la recopier dans CcPersonForm.

mais sfGuard fait déja ce que tu est en train de faire !!
Si tu veux typé tes utilisateur tu peux utiliser l'héritage !

Alexandre Baron


Le 24 mars 2011 11:33, Jérémy LEHERPEUR <[email protected]> a écrit :

> 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
>

-- 
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 à