La validation de formulaire déroulant dans CodeIgniter
J'utilise CodeIgniter la forme d'aide et de validation de formulaire bibliothèque pour construire mes formulaires. Je vais avoir du mal à faire la liste déroulante "collants" et aussi de trouver des règles de validation.
C'est la façon dont je suis le remplissage de la drodown:
foreach($events as $event){
$options[$event->event_title] = $event->event_title;
}
$firstItem = '<option>Please select one...</option>';
echo form_dropdown('events', $options, '', $firstItem);
C'est la construction de la options d'événements stockés dans la base de données. La forme a l'air bien et le remplissage de tous les champs correctement.
Hwoever, quand je viens d'envoyer le formulaire, la liste déroulante n'est pas la tenue sur la valeur sélectionnée? Aussi, comment dois-je valider, je veux qu'il soit nécessaire, mais je veux également m'assurer que je n'ai pas l'exception de la première option dans la liste déroulante 'Veuillez sélectionner un...'
Merci d'avance.
Cheers,
Gaz
OriginalL'auteur Gaz | 2010-03-14
Vous devez vous connecter pour publier un commentaire.
- Vous en vue? Je vais vous montrer l'ai-je gérer cela, mais tout cela se passe dans un contrôleur:
La form_dropdown() la fonction prend un tableau qui est de l'installation comme:
$key => $valeur
Où est la clé dans mon cas, c'est un pays de l'id, et la valeur est le nom du pays. J'ai la paire '0' => 'NONE' au début de mon pays tableau, l'utilisateur ne peut pas en choisir une. Si je voulais faire de cette nécessaire comme votre situation, j'ai pu mettre la valeur '-1' => 'Veuillez sélectionner..." et il ne serait pas valider, que -1 n'est pas un nombre naturel.
Espère que mes divagations aide!
Edit:
Ok, donc avant de créer la liste déroulante avec form_dropdown(), ce que vous voulez faire est de vérifier pour une valeur sélectionnée en provenance du réseau POSTE.
Dans le cas de la CI, vous pouvez utiliser la fonction set_value($input), donc dans mon exemple, je pourrais faire quelque chose comme:
Alors maintenant, la valeur sélectionnée de la liste déroulante sera réglé à ce qui a été sélectionné sur le dernier post. Vous pourriez vouloir vérifier que la valeur de vous assurer qu'il est valide. Si rien n'a été sélectionné, vous pouvez alors régler $sélectionné comme quelque chose comme la valeur actuelle du paramètre dans la base de données ou une valeur par défaut que vous avez choisi.
Voulez-vous dire si le formulaire a été soumis mais quelque chose d'autre vous n'avez pas validé, et vous voulez le menu déroulant afin d'avoir la même valeur sélectionnée?
Ouai, c'est ce que je veux dire. Re: validation - CI semble avoir une bonne documentation de base pour la validation d'entrée, mais pas tellement pour les listes déroulantes. Aussi, j'aurais pensé qu'il y aurait un pourcentage élevé de listes déroulantes qui sont remplis à partir des valeurs de base de données et ainsi de set_select() visent à répondre pour elle, ne semble pas?
J'ai ajouté plus de ma réponse dans le cas où vous l'auriez raté. Fondamentalement, ce que je fais, il vérifie s'il y a un POST la valeur à définir, si ce n'est, quelque chose tiré de la base de données, sinon définir une valeur par défaut.
Ok, c'est un grand merci pour votre aide! 🙂
OriginalL'auteur Matthew Rapati
En vous ligne:
Il suffit de faire:
OriginalL'auteur Maximus
Personnellement, j'ai VRAIMENT comme la création de mon formulaire dans la vue plutôt que de mélanger de la présentation sur le contrôleur. Mais c'est juste mon avis. Je comprends d'avoir à pré-charger des données si c'est une grande liste, mais je ne pense pas que vous avez vraiment besoin de construire l'ensemble de la forme juste pour une liste déroulante. J'ai eu le même problème et effectivement un peu de doc de creuser pour trouver une bonne solution.
Pour Valider la Sélection, Choix
Tout ce que je fait pour que a été de fournir une méthode personnalisée dans la classe du contrôleur qui ressemble à quelque chose comme ceci
Dans votre index() (ou quelle que soit la méthode de traitement de données et de chargement de la vue) vous définissez votre code de validation de la liste déroulante.
C'est impératif que le préfixe de votre fonction personnalisée avec "callback_".
Le Maintien De La Sélection De L'Utilisateur
En conservant le choix de sélection est super simple aussi, si vous utilisez ce CI vous donne. Vous avez juste besoin d'utiliser le set_select() la fonction de chaque option dans la liste de sélection.
Donc, disons que vous avez un menu déroulant avec deux options pour le rendre facile. C'est tout ce que vous faites.
Ce qui est bien sur l'utilisation de cette fonction est qu'elle pré-sélectionne la première de "dummy" et puis si l'utilisateur effectue une sélection, mais ne parvient pas à d'autres validations, la sélection sera conservé et pré-sélectionné une fois que le formulaire est posté et invite l'utilisateur à corriger les autres erreurs.
À nouveau, cela ne peut pas satisfaire tout le monde mais c'est assez simple solution pour déroulante de validation avec CodeIgniter.
OriginalL'auteur jlafay
Je suis tombé sur ce problème ainsi, après la lecture de l'conseillé de poster ici, je l'ai eu à travailler, mais j'ai été gêné à cause de la validation du message qu'il renvoie. Cependant, je crois que j'ai trouvé une meilleure option:
Puis à la validation, vous pouvez tout simplement faire:
La validation des retours à la normale "requis" message
OriginalL'auteur Dave Essery
Eu le même problème et a réussi à le résoudre:
Si vous pouvez avoir besoin de code spécifique, je peux vous aider
OriginalL'auteur danqos