やりたい事
Laravel × Ajax でログインなしの匿名でイイねが出来る機能を作成する
参考にしたサイト
Ajax を使ってリアルタイムに反映する簡易投票システムを設置する
やりたい事はまんまこれなのですが、Laravelを使用の場合少し引っかかったことがあったのでメモします。
デモ
デモページ
♡をクリックすると投票数が1プラスされ、もう一度♡をクリックすると、投票数が元に戻ります。
プラスされた数字は再度ページを開いても反映されたままです。
PHP(Vote.php)
初心者の私はこのvote.phpをどこに作ればいいの?というところから躓きました。
Model(App\Providers)のVote.phpではなく、resources\viewsでphpファイル新規作成
変更前
$filename= 'data/'.$file.'.dat'; //local.DEBUG: data/vote_01.dat
変更後
$filename = public_path().'/data/'.$file.'.dat'; //Users/〇〇(ユーザー名)/〇〇(フォルダ)/〇〇(プロジェクト名)/public/data/vote_01.dat
-public -assets -css -js -data //データディレクトリを作成で自動的にdataディレクトリの中にvote_01.datファイルが作成される
PHP(index.blade.php)
index.blade.phpの方のパスも同じように下記のpublic_pathに変更
$filename = public_path().'/data/'.$file.'.dat';
今回は掲示板での独自いいねだったのでこのようにしました
<h3>{{ $thread->title }}</h3> <div class="btn_area"> <p class="ico_heart vote_{{ $thread->id }}">{{ get_count('vote_'.$thread->id) }}</p> <p class="btn_vote" id="vote_{{ $thread->id }}"></p
改善点
次回同じページに行った際に、カウントがプラスされているが♡マークが赤くなっていないのでまた♡を押し、♡を押しカウントアップすることが出来る
参考サイトの質問欄にもありますが、♡1にしてもう一度押しても♡0にならない(♡2から♡1とかは出来る)
以上Laravelでajaxを使用して独自いいね♡を作成する方のご参考になれば幸いです