この PHP アプリケーションは、既にフレームワークを使用していません。シンプルなモバイルアプリ用の Web サービスを構築するために、Yii フレームワークを利用しています。私たちは Yii フレームワークを初めて使用します。
この記事に従って作業を開始しました - http://www.yiiframework.com/wiki/175/how-to-create-a-rest-api/#hh13
主に、ApiController.phpを作成し、Controller クラスを拡張しただけです。
データベースには、カテゴリ、サブカテゴリ、広告の 3 つのテーブルがあります。テーブル関係は次のとおりです。
- カテゴリには多くのサブカテゴリがあります
- サブカテゴリには多くの広告があります
現時点では、CRUD プロセスを実行した後のデフォルトで、カテゴリ、サブカテゴリ、および広告のコードが生成されます。このコードが actionList に対して生成する問題は、レコード全体を選択することです。
以下は、単純なモバイル アプリのビューです。
- カテゴリをリストビューとして表示
- カテゴリをクリックすると、サブカテゴリがリストビューとして表示されます
- サブカテゴリをクリックすると、広告がリストビューとして表示されます
- 広告がクリックされたら、広告を詳細として表示します
上記のポイント 2-4 を見ると、以下を行う必要があるこの ApiController をどのように変更すればよいでしょうか?
- CategoryID による SubCategory の一覧表示
- SubCategoryID によるリスト広告
上記の記事に基づいて作成したApiController.phpのactionListは次のとおりです。
// {{{ 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));
}
} // }}}
よろしくお願いします。