2010-07-14 3 views
0
THIS QUESTION IS NOT ABOUT HOW TO SET DEFAULT VALUE OF A WIDGET 

Hello Symfonians! J'avais un doute fondamental sur les formes, en mettant 2 scénarios ci-dessous.Affichage de la valeur du widget par défaut uniquement lorsque la valeur de l'objet n'est pas définie (en mode NEW)

J'ai un customModelForm qui étend un modelForm. 1> Si je ne spécifie pas de valeur par défaut pour un champ de formulaire nouveau: champ vide modifier: champ affiche la valeur dans l'objet 2> Si je spécifie une valeur par défaut pour un champ, nouveau: champ affiche défaut valeur modifier: champ affiche la valeur par défaut

J'essaie d'éviter le comportement du mode EDIT dans le scénario 2. La valeur par défaut ne doit être affichée que lorsque la valeur de l'objet n'est pas définie.

J'appelle parent :: configure après avoir défini la valeur par défaut. Avons-nous un contrôle sur l'événement 'bind'?

Merci

Répondre

1

Cela ne devrait pas se produire, au moins dans la doctrine. La partie du code où cela se produit est updateDefaultsFromObject en sfFormDoctrine. Les lignes concernées sont les suivantes:

if ($this->isNew()) 
{ 
    $defaults = $defaults + $this->getObject()->toArray(false); 
} 
else 
{ 
    $defaults = $this->getObject()->toArray(false) + $defaults; 
} 

updateDefaultsFromObject ne net jusqu'à ce que nous appelle la chaîne de configuration est fait, donc autre chose doit se passer ici.

Utilisez-vous Doctrine? Utilisez-vous la version la plus récente de Symfony (il y a eu un bug il y a quelques temps)? Êtes-vous sûr que la valeur par défaut est définie dans la méthode configure de votre formulaire?

Le contrôle de richesse isNew devrait être évité. Il y a un problème plus important ici car le comportement correct est que la valeur par défaut soit écrasée par les valeurs d'un objet existant.

+0

Oui. Im en utilisant Doctrine 1.2. Mais je suis sur la version 1.4 de Symfony. J'ai vraiment besoin d'améliorer! – Prasad

1

Tout d'abord, appelez parent::configure() d'abord dans votre méthode configure(). De cette façon, vous ne courez pas le risque que votre configuration soit écrasée par la configuration parente.

Vous pouvez définir les valeurs par défaut en fonction du statut du modèle en faisant quelque chose comme ce qui suit dans votre méthode configure():

if ($this->getObject()->isNew()) 
{ 
    // do something here but only if the object is new 
} 
else 
{ 
    // the object is being edited 
} 
+0

merci. pensez-vous que cela devrait être pris en charge par le cadre? Quelqu'un at-il besoin d'afficher les valeurs par défaut même lorsque la valeur est définie dans l'objet? – Prasad

Questions connexes