我们有这个 PHP 应用程序已经不使用任何框架。我们正在利用 Yii 框架为我们的简单移动应用程序构建 Web 服务。我们对 Yii 框架还很陌生。
我们按照这篇文章并设法开始工作 - http://www.yiiframework.com/wiki/175/how-to-create-a-rest-api/#hh13
主要是它只是创建了ApiController.php并扩展了 Controller 类。
我们在数据库中有 3 个表:类别、子类别、广告。表关系如下:
- 类别有很多子类别
- 子类别有很多广告
目前默认情况下,在进行 CRUD 处理后,它会生成 Category、Subcategory 和 Ad 的代码。我们遇到的问题是此代码为 actionList 生成为选择整个记录。
这是我们简单的移动应用程序的视图,如下所示:
- 将类别显示为列表视图
- 单击类别后,将子类别显示为列表视图
- 单击子类别后,将广告显示为列表视图
- 点击广告后,将广告显示为详细信息
看上面的2-4点,我们要怎么修改这个ApiController呢,下面我们要做的事情呢?
- 按 CategoryID 列出子类别
- 按 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));
}
} // }}}
我很感激你的帮助。