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
