-1

この PHP アプリケーションは、既にフレームワークを使用していません。シンプルなモバイルアプリ用の Web サービスを構築するために、Yii フレームワークを利用しています。私たちは Yii フレームワークを初めて使用します。

この記事に従って作業を開始しました - http://www.yiiframework.com/wiki/175/how-to-create-a-rest-api/#hh13

主に、ApiController.phpを作成し、Controller クラスを拡張しただけです。

データベースには、カテゴリ、サブカテゴリ、広告の 3 つのテーブルがあります。テーブル関係は次のとおりです。

  1. カテゴリには多くのサブカテゴリがあります
  2. サブカテゴリには多くの広告があります

現時点では、CRUD プロセスを実行した後のデフォルトで、カテゴリ、サブカテゴリ、および広告のコードが生成されます。このコードが actionList に対して生成する問題は、レコード全体を選択することです。

以下は、単純なモバイル アプリのビューです。

  1. カテゴリをリストビューとして表示
  2. カテゴリをクリックすると、サブカテゴリがリストビューとして表示されます
  3. サブカテゴリをクリックすると、広告がリストビューとして表示されます
  4. 広告がクリックされたら、広告を詳細として表示します

上記のポイント 2-4 を見ると、以下を行う必要があるこの ApiController をどのように変更すればよいでしょうか?

  • CategoryID による SubCategory の一覧表示
  • SubCategoryID によるリスト広告

上記の記事に基づいて作成したApiController.phpactionListは次のとおりです。

// {{{ actionList
    public function actionList()
    {
        // $this->_checkAuth();

        switch($_GET['model'])
        {
            case 'category': // {{{ 
                $models = Category::model()->findAll();
                break; // }}} 
            case 'ad': // {{{ 
                $models = Ad::model()->findAll();
                break; // }}} 
            case 'subcategory': // {{{ 
                $models = Subcategory::model()->findAll();
                break; // }}}       
            default: // {{{ 
                $this->_sendResponse(501, sprintf('Error: Mode <b>list</b> is not implemented for model <b>%s</b>',$_GET['model']) );
                exit; // }}} 
        }
        if(is_null($models)) {
            $this->_sendResponse(200, sprintf('No items where found for model <b>%s</b>', $_GET['model']) );
        } else {
            $rows = array();
            foreach($models as $model)
                $rows[] = $model->attributes;

            $this->_sendResponse(200, CJSON::encode($rows));
        }
    } // }}} 

よろしくお願いします。

4

1 に答える 1

0

次のようにサブカテゴリを反復できます (生成されたコードのように変数に名前を付けます)。$category は、サブカテゴリを表示するロード済みモデルです。

foreach($category->subcategories as $subcategory)
{
    // you have your subcategory 
}

同様に、広告を同じ方法で繰り返すことができます。

foreach($subcategory->ads as $ad)
{
     // you have all ads under this subcategory
}

最初に 2 番目のコードを配置して、それらすべてを含めることができます。

これは、ビューまたはコントローラーにすることができます。表示方法によって異なります...

于 2013-09-16T19:38:39.557 に答える