Хорошо .. у меня есть это действие в ArticleController:
/**
* @Route("/articles/{category}/{id}", name="article")
*/
public function getArticle($category, $id)
{
$articleRepo = $this->getDoctrine()->getRepository(Article::class);
$article = $articleRepo->find($id);
$categoryRepo = $this->getDoctrine()->getRepository(ArticleCategory::class);
$categories = $categoryRepo->findAll();
$categoryId = $categoryRepo->getCategoryIdByCode($category);
$lastArticles = $articleRepo->getLimitArticles($categoryId, 3);
$nextArticle = $articleRepo->getNextArticle($categoryId, $id);
$previousArticle = $articleRepo->getPreviousArticle($categoryId, $id);
if (is_null($nextArticle)) {
$nextArticle = $articleRepo->getRandomArticle($categoryId, $id);
}
if (is_null($previousArticle)) {
$previousArticle = $articleRepo->getRandomArticle($categoryId, $id);
}
$commentForm = $this->createForm(CommentFormType::class);
$answerForm = $this->createForm(CommentFormType::class);
$commentRepo = $this->getDoctrine()->getRepository(Comment::class);
$comments = $commentRepo->getComments($id);
foreach ($comments as $comment) {
$subcomments = $commentRepo->getSubComments($comment->getId());
$comment->subComments = $subcomments;
}
return $this->render('articles/article.html.twig', [
'article' => $article,
'categories' => $categories,
'lastArticles' => $lastArticles,
'nextArticle' => $nextArticle,
'previousArticle' => $previousArticle,
'commentForm' => $commentForm->createView(),
'answerForm' => $answerForm->createView(),
'comments' => $comments
]);
}
Все в порядке, возвращается файл просмотра с необходимыми данными. Но теперь я хочу, чтобы он динамически работал с AJAX. Но я не уверен, как это сделать.
Первый вариант : чтобы изменить этот метод для возврата всех данных в вызов ajax (JSON) и для заполнения элементов с помощью jquery. И вызывать метод при загрузке страницы и когда кто-то добавляет новый комментарий.
Второй вариант : создать другой метод (первый метод по-прежнему будет отображать представление, а не JSON Response), который получает только сообщения, и вызывать его с AJAX, когда кто-то добавляет новый комментарий, без отправки AJAX на странице загрузить, только если кто-то добавит пост. (но здесь у меня будет та же логика в двух методах). Затем добавить новый div для последнего добавленного элемента в другие элементы div.
Третий вариант :? Если кто-то может мне помочь?
Я не хочу, чтобы кто-то писал код для меня, я хочу, чтобы кто-то сказал мне, какой
это правильный способ сделать это в Symfony.