2010-11-11 21 views
2

J'utilise Symfony 1.3.x pour un projet.Formulaires Symfony: affiche une case à cocher (avec l'état initial non coché)

Dans la méthode configure() d'un de mes formes, je le code suivant:

'terms' => new sfWidgetFormInputCheckbox(array('value_attribute_value'=>'terms', 'default' => false)), 

L'idée est de présenter à l'utilisateur une case à cocher (par défaut cochée), que l'utilisateur devra vérifiez avant que le formulaire ne soit validé. Le problème est que lorsque j'affiche le formulaire, la case à cocher est TOUJOURS déjà cochée (c'est-à-dire sélectionnée) - ce qui va à l'encontre du but d'imposer la confirmation de l'utilisateur avec une case à cocher.

Est-ce que quelqu'un sait comment résoudre ce problème?

Répondre

3

Les valeurs de formulaire par défaut dans Symfony ont essentiellement une hiérarchie non documentée. Il est (les numéros les plus élevés ont une priorité supérieure):

  1. La valeur par défaut du widget.
  2. Si le formulaire concerne un nouvel enregistrement, la valeur de l'enregistrement.
  3. Le niveau de formulaire par défaut pour le widget (oui, les widgets et les formulaires peuvent garder une trace des valeurs par défaut SEPARATE).
  4. Si le formulaire concerne un enregistrement existant, la valeur de l'enregistrement.

Ma conjecture est l'un de 2, 3, ou 4 est en train de remplacer votre niveau de widget par défaut. Notez que 3. remplace 4. lorsque la valeur par défaut est appelée après sfFormDoctrine appels updateDefaultsFromObject.

2
$this->setDefault("is_tested", false); // unchecked checkbox 
2

quelques exemples

$this->widgetSchema['listing_status'] = new sfWidgetFormInputCheckbox(array(),array('value'=>1)); 
$this->setDefault('listing_status',1);