Задать вопрос

Как правильно выполнить ajax-запрос в Symfony?

Продолжаю изучать Symfony 5. Есть веб-страница с новостью. Внизу страницы список комментариев, под ними textarea "Текст комментария" и кнопка "Отправить" с кодом:
<input class="btn" value="отправить" data-path="{{ path('ajax_add_comment') }}" type="button">

Функционал, думаю, понятен, можно оставлять комментарии к новости. Далее должно происходить следующее:
- комментарий записывается в БД
- под кнопкой появляется надпись "Спасибо! Мы проверим комментарий и разместим его в ближайшее время"
либо "Необходимо ввести текст комментария" если textarea пуста.
- после модерации, комментарий отображается в списке комметариев.

Никаких редиректов после отправки комментария не происходит.

Сделал по-старинке:
в подключаемом javascript-файле прописано:
$( function()
{
	let but = $('.btn')
	$( but ).bind('click', but_click )
  ...
function but_click()
{
  let comment = $('#addComment').val()
  let url= $( this ).data('path')

  $.ajax({
        type: "POST",
        url: url,
        data: {
        	comment : comment,
        },
        success: function(response) {
          ...
        }
    });
}
}

И есть контроллер:
...
    /**
     * @Route("/ajax_add_comment", name="ajax_add_comment")
     */
    public function addComment(Request $request, RouterInterface $router ): Response
    {
        $comment_text = $request->request->get('comment');
     // запись в БД
...

Т.е. путь для ajax-запроса берется из существующего рута "ajax_add_comment". Все работает как задумано, но есть вопросы:

- чувствую, что такой подход неверен концептуально, применительно к Symfony.
- есть возможность обратиться к маршруту /ajax_add_comment в строке адреса браузера, приходиться делать дополнительные проверки

Как все-таки правильно делать ajax-запросы в Symfony по описанной схеме работы с UI. В сети поискал, но подходящего варианта пока не нашел. Почти всё, что есть завязано на формы, submit, последующий редирект и.т.д, и.т.п. Просьба подсказать rightway :-), или поделиться ссылками по теме. Спасибо.
  • Вопрос задан
  • 862 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы