Zend Forme: la Case de l'élément s'affiche comme un champ caché?
Je voudrais ajouter une simple case à cocher pour mon formulaire:
$element = new Zend_Form_Element_Checkbox('dont');
$element->setDescription('Check this box if you don\'t want to do this action.');
$form->addElement($element);
Cependant, c'est ce que le html ressemble à:
<dt id="dont-label"> </dt>
<dd id="dont-element">
<input type="hidden" name="dontAttach" value="0">
<input type="checkbox" name="dontAttach" id="dontAttach" value="1">
<p class="description">Don't attach a bulletin. I only want to send an email.</p>
</dd>
Le problème c'est que je suis en utilisant jQuery pour cacher tous les DT/DDs qui ont une étiquette de
à l'intérieur de la DT et un élément masqué à l'intérieur de la DD (donc mon code html est de valider et de les éléments cachés ne prennent pas de place sur la page). Est-il possible d'utiliser un Zend_Form_Element_Checkbox
sans avoir à afficher une face cachée de l'élément d'entrée? Je serais plutôt plaisante pas avec mon code jQuery pour ajouter plus de mises en garde, mais je le ferai si je dois le faire.
Solution:
Apparemment, je ne peux pas/ne devrait pas supprimer l'élément masqué avant de la case de l'élément. Alors, voici mon code jQuery pour cacher le formulaire masqué éléments sur une page:
//fix zf hidden element from displaying
$('input[type=hidden]').filter(function() {
var noLabel = $(this).closest('dd').prev('dt').html() === ' ';
var onlyChild = $(this).is(':only-child');
if (noLabel && onlyChild) {
return true;
}
return false;
}).each(function() {
$(this).closest('dd').hide()
.prev('dt').hide();
});
kiamlaluno, Zend ajoute certainement un champ caché avant chaque champ de case à cocher. Si la case est cochée, la valeur cachée n'est pas passé. Si elle est désactivée, la valeur cachée rend grâce.
OriginalL'auteur Andrew | 2009-12-22
Vous devez vous connecter pour publier un commentaire.
À changer la façon dont un élément de formulaire est affiché, vous pouvez utiliser le les décorateurs, qui peut être modifié avec
Pour une liste de tous les décorateurs par défaut, vous regardez standard décorateurs; pour une liste des décorateurs utilisés par les champs de formulaire, vous pouvez voir standard des éléments de formulaire.
Il me semble que le caché des éléments de formulaire est ajouté à partir de Zend avec un but précis, et l'enlever (si c'est encore possible) peut causer quelques problèmes. Ma première pensée est que Zend utilise cette forme cachée de vérifier si la valeur a été modifiée, ou pour vérifier si la, a été générés à partir de Zend (cette hypothèse semble peu plausible).
C'est exact; le champ caché est utilisée pour retourner une valeur lorsque la case n'a pas été sélectionné.
OriginalL'auteur kiamlaluno
sujet est vraiment vieux, mais j'ai trouvé un problème similaire il y a quelques jours - je créer un formulaire dynamiquement en javascript en cliquant sur (+) ajoute une ligne (un caché d'entrée, deux cases à cocher et deux sélectionne) pour le formulaire affiché.
J'ai trouvé, quand j'envoie _POST pour le serveur, que las ligne n'est pas envoyé corectly - par défaut zéros cachés sont envoyés, au lieu de cases sélectionnées. La solution est de mettre des cases à cocher sous la forme de tableaux:
Dans ce cas, d'autres cachés d'entrée n'est pas rendu.
PS. Désolé pour mon anglais 😉
OriginalL'auteur foxiu
Andrew, voici comment vraiment le cacher caché des éléments de formulaire:
Maintenant, vous n'avez pas de gâchis avec jQuery code pour essayer de rétrécir les vers le bas. Et, vous n'avez pas à vous soucier de case caché champs, soit.
Votre champ caché doit être enveloppé dans certains bloc-élément de niveau, pour être en XHTML valide. Si ce n'est pas au problème, supprimez le array('HtmlTag', array('tag' => 'dd')), à droite?
OriginalL'auteur Derek Illchuk
Je suis tout simplement à venir à travers l'élément masqué pour les cases à cocher de moi-même. Je n'ai pas de solution pour le poste, mais que voulez ajouter dans mes réflexions sur le champ caché. C'est donc, si l'utilisateur ne cochez pas la case une valeur de 0 est encore passé. Sinon, la case n'est pas affiché.
OriginalL'auteur kenitech
Le fil est vieux, mais aucune réponse n'est corrent...
J'ai eu le même problème, mais je l'ai compris, voici donc la réponse CORRECTE:
Si vous n'aimez pas votre case de valeur comptabilisée lorsqu'elle est désactivée et a envoyé quelques-uns de valeur que lorsqu'il EST vérifié - il suffit d'utiliser ce code:
La valeur cochée est "some_value", MAIS lorsque la case est décochée, la valeur est nulle, de sorte qu'il ne valide pas parce que "nécessaire" est défini. Il fonctionne pour moi pour l'instant et il n'est pas nécessaire d'utiliser "sophistiqué" scripts jquery pour supprimer des champs cachés, etc.
OriginalL'auteur radzi0_0
Vous pouvez ajouter un attribut disableHidden à la case élément de formulaire, ce qui l'empêche d'ajouter un champ caché pendant le rendu.
OriginalL'auteur Ilya