首页 文章

如何在Yii Framework中添加新操作?

提问于
浏览
-1

我们有这个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 回答

  • 0

    您可以按如下方式迭代子类别(名称变量与生成的代码一样) . $ category是您将为其显示子类别的加载模型 .

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

    同样,您可以采用相同的方式迭代广告:

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

    您可以将第二个代码放在第一个代码中以包含所有代码 .

    这可以在视图或控制器中,它取决于您想要显示的方式...

相关问题