Вероятно, вопрос новичка, но я не нашел удовлетворительного ответа в Интернете ...
Я использую модальные окна для управления CRUD на экране DataTables. Мой backenn - Symfony 5, и я использую Webpack-Encore. Все работает нормально ... но метод запроса.
Для краткости jQuery создает запрос POST, который подтверждается через панель управления навигатора. Однако, когда я получаю запрос на стороне Symfony, он становится GET. Я могу справиться с этим с помощью GET, но это гораздо небезопаснее, чем использование POST. здесь мой целевой URL-адрес находится за брандмауэром).
Может ли кто-нибудь подтвердить эту точку зрения, и даже лучше, есть ли что-то более чистое, чем использование GET? Я уже пробовал 1 / переключиться с $. ajax на $ .post 2 /, чтобы использовать оператор before_send и различные другие обходные пути. Вот почему я думаю, что «проблема» находится на стороне Symfony, а не в jQuery или контроллере PHP.
Мой jquery:
$('#js_edit_button').on('click', function () {
$.each($('#recordForm input'), function(){
$(this).val(table.row('.selected').data()[$(this).attr('id')]);
});
$('#recordForm').attr('rowindex', table.row('.selected').id);
$('#recordModal').modal('toggle');
});
$('#recordForm').on('click', '#save', function(e){
const modifiedData = {};
$.each($('#recordForm input'), function(){
Object.assign(modifiedData, {[$(this).attr('id')]:$(this).val()});
});
console.dir(modifiedData);
if (modifiedData.id == ''){
console.dir('Creation');
$.ajax({
url: Routing.generate('app_suppliers_add'),
// preferred method would be POST but does not work (due to security routing in Symfony ?)
type: 'GET',
data: modifiedData,
success: () => {
$('#recordModal').modal('hide');
table.ajax.reload();
}
});
} else {
$.ajax({
url: Routing.generate('app_suppliers_edit'),
// preferred method would be POST but does not work (due to security routing in Symfony ?)
type: 'GET',
data: modifiedData,
success: () => {
$('#recordModal').modal('hide');
table.ajax.reload();
}
});
};
});
Контроллер , всегда возвращается "GET":
/**
* @Route("/masterdata/suppliers/edit", name="app_suppliers_edit", options={"expose" = true})
* @IsGranted("ROLE_CCC")
*/
public function editSupplier(Request $request)
{
dd($_SERVER['REQUEST_METHOD']);
...
Любые советы приветствуются !!