Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2010, 19h51   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 0
Points : 0
Par défaut problème d'existence d'un champ du formulaire

bonjour,
j'ai un problème de validation d'un formulaire:je veux tester l'existence d'une année dans mon formulaire par exemple ne pas répéter une année qu'on a déjà entrer pour cela j'ai crée mon propre validateur appelé glValidatorExistance jusqu'à maintenant tout va bien mais le problème s'impose lors de la modification il m'affiche comme quoi l'année existe déjà alors que je suis en modification et pas en création.
le code est le suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class CetForm extends BaseCetForm
{
	public function configure()
	{
		$this->setWidgets(array(
      'id_cet'     => new sfWidgetFormInputHidden(),
      'annee'      => new sfWidgetFormInputText(array('label'=>''),array('maxlength'=>4,'size' => 20)),
      'jours'      => new sfWidgetFormInputText(),
      'montant'    => new sfWidgetFormInputText(),
		));
 
		$this->setValidators(array(
      'id_cet'     => new sfValidatorDoctrineChoice(array('model' => $this->getModelName(), 'column' => 'id_cet', 'required' => false)),
	  'annee'      => new glValidatorAnd(array(
		new glValidatorExistance(array('table'=>'Cet','champ'=>'annee','existe'=>false,'required'=>true),array('inexistance'=>"Année déja existante.",'required'=>"Ce champs est obligatoire")),
	    new glValidatorInteger(array('min' => 0,'max' => 9999,'required'=>true),array('required'=>"Ce champs est obligatoire")),
	    )),
      'jours'      => new glValidatorNumber31(array('partie_entiere'=>3,'partie_flotante'=>1,'required' => true)),
      'montant'    => new glValidatorNumber92(array('partie_entiere'=>9,'partie_flotante'=>2,'required' => true)),
		));
 
 
		$this->widgetSchema->setNameFormat('cet[%s]');
	}
}
Merci pour toute réponse.
milosovic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 14h13   #2
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 769
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 769
Points : 788
Points : 788
Citation:
Envoyé par milosovic Voir le message
le problème s'impose lors de la modification il m'affiche comme quoi l'année existe déjà alors que je suis en modification et pas en création.
La bonne formulation est : l'année existe déjà (dans la table) parce que tu es en modification.

Ton validateur doit adapter sa vérification selon que tu es en update ou en create. La méthode isNew() de l'objet peut t'aider à le savoir.

Code :
1
2
3
4
5
6
7
8
if($obj->isNew()) {
   // vérifie que l'année n'existe pas dans la table
}
else {
   // vérifie que 
  // - l'année n'existe pas (on a modifié l'année de l'objet) 
  // - ou n'existe que pour l'objet courant (on n'a pas modifié l'année de l'objet)
}
Herode est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 22h23   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 0
Points : 0
Merci pour votre réponse ça m'a résolu le problème.
milosovic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h23.


 
 
 
 
Partenaires

Hébergement Web