Bonjour,
J'ai une ou plusieurs case à cocher générés dynamiquement pour activer des options de mes widgets. Mais ne connaissant donc pas forcément le nombre d'options de chacun de mes widgets, ainsi que de leur nom, je dois pouvoir poster en JSON les cases à cocher "unchecked". Pour avoir un JSON propre dans le POST je ne peux pas mettre un input hidden car le serializeArray va envoyer deux valeurs pour la même case.
Donc j'ai du enlever le use_hidden_element(de ma configuration du formulaire ZF2) a false pour mes cases a cocher.
Sauf que, quand je ne les check pas, rien n'est envoyé en POST pour cette donnée, comme si elle n'existait pas.
Je dois donc modifier ce script Javascript pour que le JSON envoie correctement les donnée a mon controlleur.
Donc quand je coche une donnée j'ai ceci (et ça marche déjà)
Mais si je ne coche pas, je n'ai rien alors que j'aimerai avoir ceci :
Votre aide est apprécié si vous avez déjà rencontré ce problème.
Modifié par Hooli (22 Sep 2015 - 11:48)
J'ai une ou plusieurs case à cocher générés dynamiquement pour activer des options de mes widgets. Mais ne connaissant donc pas forcément le nombre d'options de chacun de mes widgets, ainsi que de leur nom, je dois pouvoir poster en JSON les cases à cocher "unchecked". Pour avoir un JSON propre dans le POST je ne peux pas mettre un input hidden car le serializeArray va envoyer deux valeurs pour la même case.
Donc j'ai du enlever le use_hidden_element(de ma configuration du formulaire ZF2) a false pour mes cases a cocher.
Sauf que, quand je ne les check pas, rien n'est envoyé en POST pour cette donnée, comme si elle n'existait pas.
Je dois donc modifier ce script Javascript pour que le JSON envoie correctement les donnée a mon controlleur.
$(".switch-checkbox").on('switchChange.bootstrapSwitch', function(event, state) {
event.preventDefault();
var data = JSON.stringify($('form[name="option"]').serializeArray());
$.ajax({
url: "<?php echo $this->url('widget/saveConfigure') ?>",
dataType: 'json',
contentType: 'application/json',
async: true,
data: data,
type: 'post',
beforeSend : function() {
$(".flash-message > p").html('');
$('.flash-message').addClass("hidden");
},
success: function (data) {
$(".flash-message > p").html('').append("Changement pris en compte avec succès");
$('.flash-message').removeClass("hidden");
},
error: function () {
console.log("Error...");
}
});
});
Donc quand je coche une donnée j'ai ceci (et ça marche déjà)
[{"name":"idConfig","value":"12"},{"name":"addDataFac","value":"1"}]
Mais si je ne coche pas, je n'ai rien alors que j'aimerai avoir ceci :
[{"name":"idConfig","value":"12"},{"name":"addDataFac","value":"0"}]
Votre aide est apprécié si vous avez déjà rencontré ce problème.
Modifié par Hooli (22 Sep 2015 - 11:48)