0

首先真的很抱歉,如果这是一个愚蠢的问题,但我是初学者。

所以我最近开始使用fulephp,我有一个小网站,希望让用户能够喜欢其他用户的个人资料。

但是我在这方面有点缺乏经验。所以我有一张桌子users_like

id | users_id | liked_by
1  | 5        | 1
2  | 5        | 3
3  | 1        | 2
4  | 1        | 9

user_id谁得到了赞,谁liked_by给了赞

所以我在用户个人资料上有一个赞按钮

<button class="like btn btn-primary" data-like="<?php echo $user->profile['user_id']; ?>">Like</button>

data-like包含获得喜欢的用户ID

插入看起来像这样

PHP 函数

public function action_like($id)
    {
        if(Input::is_ajax()):

            $response = Response::forge();

                $like = Model_Like::forge();
                $like->user_id = $id;
                $like->liked_by = Session::get('sentry_user');
                $like->save();

                $response->body(json_encode(array(
                    'status' => 'liked',
                )));

            return $response;


        endif;// is ajax
    } 

jQuery ajax 帖子

$('button.like').on('click', function(){
    var likeId = $(this).data('like');
    $.ajax({
        type: "POST",
        url: siteUrl + "profile/like/" + likeId,
        dataType: "json",
        context: this,
        beforeSend: function()
        {
            $(this).attr('disabled', 'disabled');
        },

        success: function(data)
        {
            if(data.status === "liked") {
                $(this).removeClass('like')
                .addClass('unlike')
                .text('Un-Like');

            }
        }, 

        complete: function()
        {
            $(this).removeAttr('disabled', 'disabled');
        }
    });
});

所以实际上我的逻辑是这样的。

orm retuns 用户喜欢,我正在考虑这样做

if(Session::get('sentry_user') != $like['liked_by']) {
  <button class="like btn btn-primary" data-like="<?php echo $user->profile['user_id']; ?>">Like</button>
}
else {
  <button class="unlike btn btn-primary" data-like="<?php echo $user->profile['user_id']; ?>">Un-Like</button>

}

因此,如果登录的用户 id 不等于,则liked_by显示按钮 Like 否则显示按钮不像,并且如果他们单击该功能将删除 like

但是我很傻,因为我忘记了这实际上返回了数组,所以这是一个禁忌

所以我的问题是,我应该以某种方式使用 jquery cookie 来实现以下目标。

当用户单击 Like some 如何让用户喜欢该配置文件并将按钮更改为不同时。

或者请有人给我这个解决方案的一点提示,只是一个提示或建议。

4

1 回答 1

-1

在我看来,我做这个任务是这样的:

1)用户登录,我们将其保存到会话数据中

2)当用户请求某个页面时,我们返回按钮“喜欢”或“不喜欢”(建议输出 2 个按钮一个隐藏,见下文)

3)当用户点击“喜欢”时:通过 jquery 发布喜欢并在成功后您必须更改为按钮以不同于它可以通过更改样式、文本、事件等来完成,但我建议您隐藏“喜欢”按钮和显示“不一样”

4)当用户点击“不喜欢”时:与3)相同,但成功时更改为“喜欢”按钮

PS:在服务器端,我建议在成功或失败时返回真或假。

于 2012-11-08T17:04:48.707 回答