Ajaxで新しくなりました。その目的は、記事とは異なり、1人のユーザーが好きなものです。私のコードを見て:ajaxリクエスト後に表示されるデータをリフレッシュするsymfony
コントローラ
public function likeAction(Request $request, Article $article, $slug)
{
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
throw $this->createAccessDeniedException();
}
if ($request->isXmlHttpRequest()) {
$tokenStorage = $this->get('security.token_storage');
$currentUser = $tokenStorage->getToken()->getUser();
$likes = $article->getLikes();
foreach ($likes->getUsers() as $user) {
if ($user == $currentUser) {
throw new \Exception('Vous aimez déjà cet article !');
}
}
$likes->addUser($currentUser);
$likes->setCount($likes->getCount() + 1);
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
$count = $article->getLikes()->getCount();
return new JsonResponse(array('data' => $count));
}
return $this->redirectToRoute('pm_platform_view', array('slug' => $slug));
}
ルート
pm_platform_like:
path: /like/{slug}
defaults:
_controller: PMPlatformBundle:Article:like
ビュー
<a class="btn btn-blue-grey" id="like" role="button"></a>
<span class="counter" id="counter">{{ article.likes.count }}</span>
<script>
$(document).ready(function() {
$(document).on('click', '#like', function (e) {
$this = $(this);
$.ajax({
type: 'GET',
url: '{{ path('pm_platform_like', {slug: article.slug}) }}',
dataType: 'JSON',
data: {},
success: function() {
//refresh article.count here
}
});
});
});
</script>
は現在、Ajaxのリクエストが動作し、データベースに永続化されている "のように"。しかし、私の考えでは何も変わらず、データを "リフレッシュ"する必要があります.Ajaxリクエストが成功した後は、記事エンティティのcount属性に似ています。私はそれに助けが必要です。
あなたは、AJAX成功条件のカウントのように取得するための関数を呼び出すことができます。 –
私は理解していない、あなたは例を書くことができますか? –