0

私は現在、yiiフレームワークでアプリケーションを作成しています。このアプリケーションの目的の1つは、事前定義されたさまざまなカテゴリとプラットフォームでゲームを評価できるようにすることです。ゲームは複数のプラットフォームに属することができます。

これがどのようになるかの例:私は「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 側では、通常の HTTP リクエストを処理するのと同じように AjaxRequest を処理します。したがって、レコードの存在をチェックする制御フローがあるアクションがあります (findByPk はオプションです)。

私には、あなたは非常に基本的な質問をしているように思えます。コードを提供しても、短期的には物事が簡単になるだけです。yii-framework のチュートリアルに取り組むことを強くお勧めします: http://www.yiiframework.com/doc/guide/ http://www.yiiframework.com/doc/blog/

編集:あなたの質問はまだあまり明確ではありません(トピックについての読書の欠如に対するヒントのようなものです)。すでにわかっているように、「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 に答える