我们有这个PHP应用程序已经没有使用任何框架 . 我们正在利用Yii框架为我们的简单移动应用程序构建Web服务 . 我们对Yii框架很新 .
我们按照这篇文章设法开始工作 - http://www.yiiframework.com/wiki/175/how-to-create-a-rest-api/#hh13
主要是它刚刚创建 ApiController.php 并扩展了Controller类 .
我们在数据库中有3个表:Category,Subcategory,Ad . 表格关系如下:
类别有很多子类别子类别有很多广告
在执行CRUD过程后的默认情况下,它会生成Category,Subcategory和Ad的代码 . 这个代码为actionList生成的问题是选择整个记录 .
以下是我们简单的移动应用程序的视图如下:
将类别显示为列表视图单击类别后,将子类别显示为列表视图单击子类别后,将广告显示为列表视图点击广告后,将广告显示为详细信息
看上面的第2-4点,我们如何修改这个ApiController,我们必须在下面进行以下操作?
按类别ID列出子类别按子类别ID列出广告
这是我们根据上述文章创建的 actionList ApiController.php :
// {{{ 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));
}
} // }}}
我很感激你的帮助 .
1 回答
您可以按如下方式迭代子类别(名称变量与生成的代码一样) . $ category是您将为其显示子类别的加载模型 .
同样,您可以采用相同的方式迭代广告:
您可以将第二个代码放在第一个代码中以包含所有代码 .
这可以在视图或控制器中,它取决于您想要显示的方式...