2009-11-25 9 views
4

J'utilise un élément Sélectionnez, sous formeComment désactiver un élément de formulaire dans symfony?

'country' =>new sfWidgetFormChoice(array('choices' => CountryPeer::getAllCountry())), 

'city' =>new sfWidgetFormChoice(array('choices' => CityPeer::getAllCity())), 

je veux cet élément de la ville pour être désactivé, à la première fois où les chargement de la page. et à la sélection du pays, l'élément ville sera activé (il sera chargé via l'appel AJAX)

Répondre

10

Vous pouvez désactiver comme celui-ci

$ this-> widgetSchema [ 'pays'] -> setAttribute ('désactivé', 'désactivé');

+0

Ouais! Cela fonctionne l'option de sélection est désactivée à la première fois lorsque le formulaire se charge. merci Metoikos! –

+1

Comme Mike déjà mentionné. Ce n'est pas le bon moyen lorsque vous voulez utiliser les champs pour POST/PUT plus tard. Ensuite, il devrait être readonly au lieu de désactivé –

0

Si vous chargez déjà les données de la deuxième liste via AJAX, pourquoi ne pas désactiver et activer la deuxième liste via Javascript?

La désactivation peut être effectuée soit en dur dans le modèle (avec du code HTML), soit en Javascript (après chargement du document).

Pour l'activation, utilisez une méthode de rappel pour l'appel AJAX (sur l'événement de réussite).

Il serait utile de savoir comment vous faites réellement l'appel AJAX (jquery?).

0

Eh bien, le moyen le plus propre est d'apprendre "comment écrire son propre widget" et l'écrire réellement. Vous pouvez jeter un oeil à sfWidgetFormDate comme un exemple approximatif.

6

$ this-> widgetSchema ['field'] -> setAttribute ('readonly', 'readonly');

+1

merci pour votre réponse, je vais essayer cela et vous faire savoir que -> setAttribute ('désactivé', 'désactivé'); travaillé pour moi. –

+2

C'est la bonne façon. Si vous désactivez et soumettez le formulaire et que le formulaire ne réussit pas la validation, les widgets définis sur désactivé ne seront pas rechargés. Réglage à readonly travaillé dans ma chope. –

+0

Je suis d'accord que c'est la bonne façon. La définition de l'attribut sur désactivé signifiait que si un autre champ échouait à la validation, la valeur du champ de formulaire désactivé ne serait pas repeuplée. En lecture seule ftw. – overgroove

Questions connexes