Laravel中点賛機能実現
6142 ワード
本論文では,Ajax,Redisを主に用いたユーザ登録のない単純な点賛機能に基づいている.
まず公式サイトのガイドに従ってpredis をダウンロードする必要がありますそしてdatabase.phpではredis を構成する 1
注意:システムがpeclでredisをダウンロードした場合、上記の構成のclientに対応する値はphpredisに変更する必要があります.ペン主はローカル環境でclientを付けなくても間違いなく報告されません.もちろん、個人のローカル環境や生産環境での構成を見なければなりません.最後に対応するコントローラの下でredis を使用する.
Redisの使い方はマニュアルを自分で調べることができます
原理:ユーザーが「いいね」をクリックした後、Ajaxを通じてバックグラウンドに要求し、バックグラウンドではまずユーザーが「いいね」をクリックしたかどうかを検出する(Redisからキー値を取り、「いいね」を1、「いいね」を0にしない).対応するステータスコードをjsに返します.BTWは,ユーザ登録などが加わると,現在のユーザが「いいね」をクリックした後に,ユーザが「いいね」をクリックしたかどうかを直接判断するクッキーを生成し,バックエンドでデータベースを検索する必要がなくなり,応答速度を向上させる.
実現構想:点賛ページのコントローラで現在の点賛状況をビューにバインドし、ビューではjsで点賛ボタンを監視し、クリックするとバックエンドの論理ページにアクセスして論理処理を行う. 1 1 2 3 4 5 6 7 8 9 10
ここで注意したいのは、jQueryコードで使用されている場合
コンフィギュレーション
$ composer require predis/predis
'redis' => [
'client' => 'predis',
'cluster' => false,
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
注意:システムがpeclでredisをダウンロードした場合、上記の構成のclientに対応する値はphpredisに変更する必要があります.ペン主はローカル環境でclientを付けなくても間違いなく報告されません.もちろん、個人のローカル環境や生産環境での構成を見なければなりません.
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];
}
}
<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>
ここで注意したいのは、jQueryコードで使用されている場合
$.post
が発生する可能性があります[object%object]
というエラーは、比較的重要です.