Symfony - запрос POST принудительно GET в сценарии jquery с использованием модального? - PullRequest
0 голосов
/ 28 мая 2020

Вероятно, вопрос новичка, но я не нашел удовлетворительного ответа в Интернете ...

Я использую модальные окна для управления 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']);
    ...

Любые советы приветствуются !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...