Продолжаю изучать 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 :-), или поделиться ссылками по теме. Спасибо.