Laravel中点賛機能実現

6142 ワード

本論文では,Ajax,Redisを主に用いたユーザ登録のない単純な点賛機能に基づいている.

コンフィギュレーション

  • まず公式サイトのガイドに従ってpredis
  • をダウンロードする必要があります
    $ composer require predis/predis
  • そしてdatabase.phpではredis
  • を構成する
    'redis' => [
    
        'client' => 'predis',
    
        'cluster' => false,
    
        'default' => [
            'host' => env('REDIS_HOST', 'localhost'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
        ],
    
    ],
  • 1

  • 注意:システムがpeclでredisをダウンロードした場合、上記の構成のclientに対応する値はphpredisに変更する必要があります.ペン主はローカル環境でclientを付けなくても間違いなく報告されません.もちろん、個人のローカル環境や生産環境での構成を見なければなりません.
  • 最後に対応するコントローラの下でredis
  • を使用する.
    use Illuminate\Support\Facades\Redis;

    Redisの使い方はマニュアルを自分で調べることができます

    点賛の基本原理と実現構想


    原理:ユーザーが「いいね」をクリックした後、Ajaxを通じてバックグラウンドに要求し、バックグラウンドではまずユーザーが「いいね」をクリックしたかどうかを検出する(Redisからキー値を取り、「いいね」を1、「いいね」を0にしない).対応するステータスコードをjsに返します.BTWは,ユーザ登録などが加わると,現在のユーザが「いいね」をクリックした後に,ユーザが「いいね」をクリックしたかどうかを直接判断するクッキーを生成し,バックエンドでデータベースを検索する必要がなくなり,応答速度を向上させる.
    実現構想:点賛ページのコントローラで現在の点賛状況をビューにバインドし、ビューではjsで点賛ボタンを監視し、クリックするとバックエンドの論理ページにアクセスして論理処理を行う.
    class IndexController extends Controller
    {
        public function index() 
        {
            $allClick = Redis::get("click");
    
            return view('index',['click' => $allClick]);
        }
    
        public function isLike()
        {
            $click = Redis::get("click");
            if($click) {
                Redis::set("click",0);
                return ['status' => 0,'msg' => '    ','count' => 0];
            } else {
                Redis::set("click",1);
                return ['status' => 1,'msg' => '    ','count' => 1];
            }
        }
  • 1
  • <script type="text/javascript">
    
        $(function($) {
            var event = $("#like").click(function () {
                $.ajax({
                    url : "api/islike"
                }).success(function (data1) {
                    if(data1.status) {
                        alert("    ");
                        $("#count").text('');
                        $("#count").text(data1.count);
                    } else {
                        alert("Yummy" + data1.msg);
                        $("#count").text('');
                        $("#count").text(data1.count);
                    }
                });
            });
        })
    script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

  • ここで注意したいのは、jQueryコードで使用されている場合$.postが発生する可能性があります[object%object]というエラーは、比較的重要です.