在 控制器中,常用的几行代码

<?php
namespace wxapi\controllers;

use yii\rest\ActiveController;
use yii\data\ActiveDataProvider;
use yii\Helpers\ArrayHelper;
use wxapi\models\Post;


class PostController extends ActiveController
{
    public $modelClass = 'wxapi\models\Post';

    public function actions()
    {
        $actions = parent::actions();
        // 禁用 "delete" 和 "create" 动作
        unset($actions['delete'], $actions['create']);

        unset($actions['index']);
        // 使用 "prepareDataProvider()" 方法自定义数据 provider 
        //$actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];
        return $actions;
    }

    // 这两种方法都可以自定义接口返回的数据 一个采用 ActiveDataProvider,不要忘了写 asArray() 
    //    另一个直接用模型返回数据
    public function actionIndex()
    {
      //这么写代码貌似就可以绕过自定义的模型,直接使用原来web的模型
            // $modelClass = $this->modelClass;
            // return new ActiveDataProvider([
            //     'query' => $modelClass::find()->asArray(),
            //     'sort' => [
               //      'defaultOrder' => [
               //          'created' => SORT_DESC,
               //      ]
               //  ],
            //     'pagination' => false
            // ]);
            
            //    这样写可以使用我们自定义的模型
            return Post::find()->where(['isindex'=>1])->orderBy(['created'=>SORT_DESC])->all();
    } 


    //    自定义搜索方法,需在路由规则中配置
    //    http://192.168.50.225/p/search/2019
    public function actionSearch($keyword){
        if(!$keyword){
            return null;
        }
        $models = Post::find()->where(['like', 'title', $keyword])->all();
        return $models;
    }


}

模型中,也可以控制数据的返回情况,当然最好重新写个模型,不要直接用原来web的模型

<?php
namespace wxapi\models;

use wx\models\Wxpost;

class Post extends Wxpost
{
    
    public function fields()
    {
        $fields = parent::fields();
        // 删除一些包含敏感信息的字段
        unset($fields['updated']);
       
        //return $fields;
        return [
            'id',
            'isindex',
            'title',
            //'thumb' => 'picurl',
            'thumb' => function($m){
                return "http://192.168.50.222" . $m->picurl;    //直接使用web接口的图片
            },
             'author' =>function($m){
                 return $m->u->nickname;
             },
             'cate' => function($m){
                 return $m->wxcate->name;
             },
            'postdesc',
            //'content'=>'body',
            'content'=>function($m){
                return strip_tags($m->body);
            },
            'created'=>function($m){
                return date("Y-m-d H:i:s", $m->created);
            },
            
        ];
    }

    
}

这些都利用了另一个app 的模型和数据库。