tu peux essayer comme cela :

'email_address' => setPostValidator (new sfValidatorDoctrineUnique(
>
> array('model' => 'Customer', 'column' => array('id','email_address'))
>
, array( 'invalid' => 'Cette adresse e-mail est déjà dans la
> base client'))),



Alexandre Baron




Le 1 avril 2011 09:14, manuel brossard <[email protected]> a écrit :

> Oui c 'est tout le problème, je ne peux pas utiliser le
> sfValidatorDoctrineUnique car en cas d' édition du record impossible de
> valider le formulaire.
>
>
> Le 1 avril 2011 08:10, alex baron <[email protected]> a écrit :
>
>> Perso j'ai procédé que suit:
>>
>>
>> 1-> je crée un postvalidator
>> $this->mergePostValidator( new sfValidatorCallback(array('callback' =>
>> array($this, 'checkUniqueBillingId'))) );
>>
>> 2-> dans le même formulaire on trouve la fonction checkUnique...
>> public function checkUniqueBillingId($validator, $values)
>>   {
>>     $noBilling = isset($values['no_billing']) ? $values['no_billing'] :
>> NULL;
>>
>>     if(!agrPubBillingTable::getInstance()->isUnique($noBilling,
>> $this->getObject()->getPublisherId(), $this->getObject()->getId()))
>>     {
>>       throw new sfValidatorErrorSchema($validator, array(
>>           'no_billing' => new sfValidatorError($validator, 'There is
>> already a bill with this id')
>>       ));
>>     }
>>     return $values;
>>   }
>>
>> 3-> isUnique renvoie faux si un enregistrement avec un autre id et le même
>> noBilling existe.
>>
>> dans ton cas je dirai, mais je peux me tromper, que si tu fait un update
>> alors ton validateur te renverra une erreur. Il truver
>> Alexandre Baron
>>
>>
>>
>>
>> Le 31 mars 2011 23:53, manuel brossard <[email protected]> a écrit :
>>
>>
>>> OK cela donne donc pour moi. ?
>>>>
>>>>
>>>> $this->setValidators(array(
>>>>       'first_name' => new sfValidatorString(array('required' => true)),
>>>>       'last_name' => new sfValidatorString(array('required' => true)),
>>>>        'username' => new sfValidatorString(array('required' => true)),
>>>>
>>>>        'email_address' =>  new sfValidatorEmail(array('required' =>
>>>> true)),
>>>>        'email_address' => setPostValidator (new
>>>> sfValidatorDoctrineUnique(array('model' => 'Customer', 'column' =>
>>>> 'email_address'), array( 'invalid' => 'Cette adresse e-mail est
>>>> d&eacute;j&agrave; dans la base client'))),
>>>>
>>>>
>>>> Le 31 mars 2011 17:13, Nicolas <[email protected]> a écrit :
>>>>
>>>> Bonjour,
>>>>>
>>>>> si mes souvenirs sont bons, il faut utiliser un postValidator pour ce
>>>>> cas là :
>>>>>
>>>>> $this->validatorSchema->setPostValidator(new
>>>>> sfValidatorDoctrineUnique(array('model'
>>>>>
>>>>> => 'Customer', 'column' => 'email_address'), array( 'invalid' =>
>>>>> 'Cette adresse e-mail est d&eacute;j&agrave; dans la base client')));
>>>>>
>>>>>
>>>>> a+
>>>>> Nicolsa
>>>>>
>>>>> Le 31 mars 2011 17:09, manuel brossard <[email protected]> a écrit
>>>>> :
>>>>>
>>>>>> Rassurant !.. lol
>>>>>>
>>>>>> Désolé mais je ne comprends pourquoi il faut vérifier un autre
>>>>>> champs.. .  Dans le cas d' un update, l' id n' est pas modifié.
>>>>>>
>>>>>> Le 31 mars 2011 17:02, alex baron <[email protected]> a écrit :
>>>>>>
>>>>>> Si tu regarde dans le code du widget il est possible de spécifier
>>>>>>> plusieurs champs pour la recherche de doublon. Mais de mon côté je n'ai 
>>>>>>> pas
>>>>>>> réussi à le faire fonctionner. Je n'ai pas la toute dernière version de
>>>>>>> sf14.
>>>>>>>
>>>>>>> Alexandre Baron
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Le 31 mars 2011 16:59, manuel brossard <[email protected]> a
>>>>>>> écrit :
>>>>>>>
>>>>>>> C 'est quand même hallucinant cette histoire.. A quoi sert ce type de
>>>>>>>> widget si est utilisable à moitié. C 'est pas comme si c' était ultra
>>>>>>>> courant ce genre de cas.
>>>>>>>>
>>>>>>>> Le 31 mars 2011 16:51, alex baron <[email protected]> a écrit :
>>>>>>>>
>>>>>>>>> Bonjour,
>>>>>>>>> j'ai eu le même problème et je me suis décidé à faire mon propre
>>>>>>>>> validator. Ce qui ce passe c'est qu'il faut  vérifier deux champs 
>>>>>>>>> pour la
>>>>>>>>> contrainte d'intégrité => l'id  et l'email sinon il trouvera toujours 
>>>>>>>>> un
>>>>>>>>> doublon.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Le 31 mars 2011 15:10, manuel brossard <[email protected]> a
>>>>>>>>> écrit :
>>>>>>>>>
>>>>>>>>>>  Bonjour,
>>>>>>>>>>
>>>>>>>>>> Personne n' a rencontré ce problème ?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Le 29 mars 2011 09:29, mantex <[email protected]> a écrit :
>>>>>>>>>>
>>>>>>>>>>> Bonjour à tous,
>>>>>>>>>>>
>>>>>>>>>>> J'ai un ptit soucil avec un formulaire qui se valide pas lorsque
>>>>>>>>>>> je
>>>>>>>>>>> met un jour un enregistrement :
>>>>>>>>>>>
>>>>>>>>>>> Ci dessous un extrait des validateurs :
>>>>>>>>>>>
>>>>>>>>>>> 'email_address' => new sfValidatorEmail(array('required' =>
>>>>>>>>>>> true)),
>>>>>>>>>>>       'email_address' => new
>>>>>>>>>>> sfValidatorDoctrineUnique(array('model'
>>>>>>>>>>> => 'Customer', 'column' => 'email_address'), array( 'invalid' =>
>>>>>>>>>>> 'Cette adresse e-mail est d&eacute;j&agrave; dans la base
>>>>>>>>>>> client')),
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> A la création de l' enregistrement ça fait le job pas de pb , par
>>>>>>>>>>> contre à l' update de l' enregistrement le message' 'invalid' s'
>>>>>>>>>>> affiche.
>>>>>>>>>>>
>>>>>>>>>>> En clair comment vérifierl'  unicité d' un champs d' un
>>>>>>>>>>> enregistrement
>>>>>>>>>>> en ayant la possibilité de mettre à jour un autre champs de cette
>>>>>>>>>>> enregistrement.
>>>>>>>>>>>
>>>>>>>>>>> Ps: j' utilise également un validator pour tester que la chaine
>>>>>>>>>>> saisie
>>>>>>>>>>> est bien au format mail.
>>>>>>>>>>>
>>>>>>>>>>> Bonne journée
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> 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
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Cordialement,
>>>>>>>>>>
>>>>>>>>>> Manuel Brossard
>>>>>>>>>> Twitter: twitter.com/infonel
>>>>>>>>>> Skype : mantex2039
>>>>>>>>>>
>>>>>>>>>> Tel: + 33 9 72 17 00 41
>>>>>>>>>>
>>>>>>>>>>  --
>>>>>>>>>> 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
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Cordialement,
>>>>>>>>
>>>>>>>> Manuel Brossard
>>>>>>>> Twitter: twitter.com/infonel
>>>>>>>> Skype : mantex2039
>>>>>>>>
>>>>>>>> Tel: + 33 9 72 17 00 41
>>>>>>>>
>>>>>>>>  --
>>>>>>>> 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
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Cordialement,
>>>>>>
>>>>>> Manuel Brossard
>>>>>> Twitter: twitter.com/infonel
>>>>>> Skype : mantex2039
>>>>>>
>>>>>> Tel: + 33 9 72 17 00 41
>>>>>>
>>>>>>  --
>>>>>> 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
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Cordialement,
>>>>
>>>> Manuel Brossard
>>>> Twitter: twitter.com/infonel
>>>> Skype : mantex2039
>>>>
>>>> Tel: + 33 9 72 17 00 41
>>>>
>>>>
>>>
>>>
>>> --
>>> Cordialement,
>>>
>>> Manuel Brossard
>>> Twitter: twitter.com/infonel
>>> Skype : mantex2039
>>>
>>> Tel: + 33 9 72 17 00 41
>>>
>>>  --
>>> 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
>>
>
>
>
> --
> Cordialement,
>
> Manuel Brossard
> Twitter: twitter.com/infonel
> Skype : mantex2039
>
> Tel: + 33 9 72 17 00 41
>
>  --
> 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 à