Mam problem z przekazaniem parametru "zaszytego" w data-item do formularza, a następnie po submicie do kontrolera.
Kod formularza, z którego chciałbym przekazać parametr workdayKitId do kontrolera:
<form id="jsMealForm" role="form" method="POST" action=""> <div class="modal fade" id="mealModal" tabindex="-1" role="dialog" aria-labelledby="mealModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×
</button> <h4 class="modal-title" id="mealModalLabel"><i class="fa fa-refresh" aria-hidden="true"></i> {% trans %}Wymień posiłek{% endtrans %}
</h4> <div class="modal-body form-horizontal"> <label for="" class="col-sm-5 control-label">{% trans %}Posiłek{% endtrans %}
</label> <select id="activeselect" name="param[newKitId]" class="select2 search"> {% for kit in kits %}
{% endfor %}
<input type="hidden" name="param[workdayId]" value="{{ entity.id }}"> <input type="hidden" name="param[workdayKitId]" value="{{ workdayKitId }}"> // w tym miejscu parametr jest pusty
<div class="modal-footer"> <button id="mealSubmit" type="submit" class="btn btn-primary btn-sm"><i class="fa fa-refresh" aria-hidden="true"></i> {% trans %}Zatwierdź{% endtrans %}
</button>
W templatce zaś taki oto zapis:
<a href="#" class="btn btn-primary js-workdayKitId" data-item="{{ workdayKit.id }}" data-toggle="modal" data-target="#mealModal">{% trans %}Wymień posiłek{% endtrans %}
<i class="fa fa-refresh" aria-hidden="true"></i></a>
Po kliknięciu na button z klasą js-workdayKitId pojawia się formularz w modalu, gdzie chciałbym w polu typu input hidden przekazać parametr workdayKitId do kontrolera, jednak mam problem z wywołaniem ajaksowym - id nie jest przekazywane dalej.
/* helper meal functions */
function mealInit() {
jsMealFormUrl = '{{ path('user_workdays_change_meal_ajax') }}';
}
/* meal ajax */
function mealAjaxPost(action, callback) {
mealForm.addClass('working');
mealModal.modal('hide');
$.ajax({
type: "POST",
data: mealForm.serialize(),
url: jsMealFormUrl,
success: function(data) {
mealForm.removeClass('working');
if (callback) callback(data);
mealInit();
if (!action) mealDataContainer.empty().hide().html(data).fadeIn();
else mealAjaxPost();
},
error:function() {
mealForm.removeClass('working');
}
});
return false;
}
/* meal dashboard */
var mealForm = $('#jsMealForm'),
mealDataContainer = mealForm.find('#mealDataContainer'),
mealModal = mealForm.find('#mealModal'),
workdayKitId = mealForm.find('.js-workdayKitId'), // nie wiem w jaki sposob przekazac wartosc obiektu do kontrolera
jsMealFormUrl = '';
/* submit the meal form */
mealForm.on('click', '#mealSubmit', function() {
workdayKitId.val($(this).data('workdayKitId'));
mealAjaxPost('changeMealAjax');
return false;
});
Czy ktos z Was podpowie mi, w jaki sposob przekazac parametr z data-item po kliknieciu buttona o id mealSubmit do kontrolera via ajax?
Ten post edytował swiezak 25.09.2017, 01:10:53