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

Répondre à