Les tableaux POST ne présentent pas de cases à cocher non cochées
Du mal à obtenir mon POST tableaux pour afficher toutes les valeurs de checkbox à partir de mon formulaire.
J'ai un formulaire défini comme suit:
<form name='foo' method='post' action=''>
<table>
<tr>
<td class='bla'>Checkbox: <input type='checkbox' name='cBox[]'/></td>
</tr>
<tr>
<td class='bla'>Checkbox: <input type='checkbox' name='cBox[]'/></td>
</tr>
<tr>
<td class='bla'>Checkbox: <input type='checkbox' name='cBox[]'/></td>
</tr>
</table>
</form>
J'ai un bouton au bas lié à une fonction jquery qui ajoute plus de 5 lignes vides à la forme (d'où les tables pour le nom de l'entrée cBox[]).
Maintenant, le problème. Disons que la première case est décochée, et les 2 dernières sont vérifiées. Quand je l'ai sortie les valeurs (à l'aide de PHP print_r pour le débogage), je vais obtenir:
Array ( [0] => on [1] => on)
Pour une raison quelconque, le tableau ne contient aucune valeur pour décoché les cases à cocher.
J'ai vu quelques solutions où une variable cachée est passé avec chaque case, mais cette solution peut être mise en œuvre dans ma situation (à l'aide de tableaux)?
source d'informationauteur SpaghettiMonster
Vous devez vous connecter pour publier un commentaire.
Que le comportement n'est pas surprenant, car le navigateur ne peut pas présenter n'importe quelle valeur pour les cases ne sont pas cochées.
Si vous êtes dans une situation où vous avez besoin de soumettre un nombre exact d'éléments dans un tableau, pourquoi ne faites-vous pas la même chose que vous faites quand il y a une
id
de quelque sorte associé à chaque case? Il suffit d'inclure le tableau PHP nom de la clé dans le cadre de la<input>
nom de l'élément:Que vous reste encore le problème que les cases non cochées ne sera pas présent dans le tableau. Qui peut ou peut ne pas être un problème. Pour un, vous pouvez vraiment pas de soins:
Même si vous vous souciez, vous pouvez facilement corriger le problème. Deux approches simples ici. Un, il suffit de faire le caché de l'élément d'entrée astuce:
Et de deux, que je trouve préférable, de remplir les blancs de PHP:
Le voir en action.
UNE ASTUCE consiste à remplacer la case de valeur, si l'option est cochée. sinon, sa valeur sera 0.
Essayer
Cases travailler de cette façon. Si elle est cochée, alors la valeur est affichée.
Si vous êtes à la manipulation dynamique de la case de tableau, vous pouvez essayer ceci:
HTML:
Javascript (jQuery):
Backend résultat (Si seulement vérifié la seconde):
Dans cette œuvre, les cases sont utilisés pour le contrôleur de chaque caché entrée dans un groupe.
Pour l'affichage de la page, Vous pouvez afficher les entrées paire de retour en assignant la valeur en caché entrées et de marquage des cases à cocher comme
checked
.Essayer de définir une valeur pour chaque case, de 1 ou true.
qui est peut-être pourquoi ses pas envoyer quoi que ce soit?
Dans le contrôleur:
request()->merge(['cBox' => request()->input('cBox', [])]);