0

我目前正在 yii-framework 中创建一个应用程序。该应用程序的目的之一是能够在不同的预定义类别和平台上对游戏进行评分。一个游戏可以属于多个平台。

一个例子:我选择给一个名为“x”的游戏评分。我可以看到游戏在 4 个不同的平台上发布,所以当我对游戏进行评分时,我会选择我玩它的平台。此后,我对 5 个不同类别的游戏进行评分。如果我稍后回到这个游戏,我应该能够更新该评级,但我也应该能够为不同的平台创建一个新的评级。

尤其是我不确定的最后一部分。我对如何做到这一点的猜测是创建一个包含游戏所属平台的下拉列表,并让一些 AJAX 函数决定它应该创建新评级还是更新现有评级。但是,我不知道如何做到这一点,因为我很少使用 AJAX 做某事。

你能给我一些关于如何实现这一目标的提示吗?

编辑:看起来我可能没有尝试过什么,所以我会发布一些我到目前为止创建的代码(出于某种原因,我将它命名为排名而不是评级......)。如您所见,它没有任何 AJAX,并且没有考虑平台:

protected function createRanking($model)
    {
        $user_id=Yii::app()->user->getId(); 
        $game_id=$model->id;
        $rank=ranking::model()->find("create_user_id=$user_id and game_id=$game_id"); 

        if($rank===null){
        $ranking=new Ranking;
        }
        else{
        $ranking=$rank;
        }

        if(isset($_POST['Ranking']))
        {
            $ranking->game_id=$model->id;
            $ranking->attributes=$_POST['Ranking'];

            $valid = $ranking->validate();
            if ($valid)
            {
                $ranking->save(false);
                $this->redirect(array('index'));
            }
        }
        return $ranking;
    }
4

1 回答 1

1

http://www.yiiframework.com/wiki/394/javascript-and-ajax-with-yii/ http://api.jquery.com/jQuery.ajax/

我认为你应该先阅读那些(并且有一些 PHP 和 javascript 知识)。

如果您想使用 DropDowns,您应该查看 EventHandlers(jQuery 可以帮助您)。通过下拉列表的选择器,您可以附加这样的处理程序。我不会再添加任何内容,使用我给你的关键字,你应该找到关于该主题的优秀文档。

在 Yii 方面,您处理 AjaxRequest 就像处理普通 HTTP 请求一样。所以你会有一个动作,你有控制流来检查记录的存在(findByPk 是一个选项)。

在我看来,你有非常基本的问题,给你代码只会让你在短期内变得容易。我真的建议您阅读 yii-framework 的教程: http ://www.yiiframework.com/doc/guide/ http://www.yiiframework.com/doc/blog/

编辑:你的问题仍然不是很清楚imo(哪种暗示缺乏关于该主题的阅读)。正如您已经知道“isNewRecord”是要走的路,用于检查它是更新还是创建。如果有一些与之相关的问题,您应该考虑发布包含它的代码并重新处理问题。

无论如何,这是对您的代码的一些与问题无关的次要建议:

$ranking = ranking::model()->findByAttributes(array(
    "create_user_id" => $user_id,
    "game_id" => $game_id
));

if($ranking===null) {
    $ranking=new Ranking;
}

排名/排名变量声明不清楚,因为您对同一事物使用不同的名称。此外,正如上面的代码所示,它不是必需的。此外,您基本上在您的 find 方法中使用了 SQL,这被认为是一种不好的做法,因为 Yii 的整个想法仅在绝对无法绕过它时才使用 DB 语言。此外,与数组的参数绑定方式更安全(在这种情况下,我认为这不是什么大问题)。

于 2013-03-17T14:25:25.737 回答