zoukankan      html  css  js  c++  java
  • yii rest

    环境搭建

    phpstorm + phpstudy +xdebug

    下载安装

    REST

    拷贝一个新的后台目录, 设置config/main.php中的id和控制器命名空间

    return [
        'id' => 'app-api',
        'basePath' => dirname(__DIR__),
        'controllerNamespace' => 'apicontrollers',
        'bootstrap' => ['log'],
        'modules' => [],
    

    设置url美化规则

            'urlManager' => [
                'enablePrettyUrl' => true,
                'enableStrictParsing' => true,
                'showScriptName' => true,
                'rules' => [
                    [
                        'class'=>'yii
    estUrlRule',
                        'controller' => 'xxx',
                    ]
                ],
            ],
    

    main-local.php中设置json解析器

    $config = [
        'components' => [
            'request' => [
                // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
                'cookieValidationKey' => 'fyw98YxydBk1tupwR89ghKaQvBnz0uRo',
                'parsers' => [
                    'application/json'=>'yiiwebJsonParse',
                ]
            ],
        ],
    ];
    

    修改nginx配置文件或者apache配置文件

    控制器

    继承 ActiveController

    use yiidataActiveDataProvider;
    use yii
    estActiveController;
    
    class ArticleController extends ActiveController
    {
        public $modelClass = 'commonmodelsArticle';
    }
    

    字段获取

    url附加fields参数

    重写fields方法

    在fields方法中通过匿名函数自定义字段的值

    通过重写extrafields方法来忽略某些字段

    分页

    use yiidataActiveDataProvider;
    use yii
    estActiveController;
    
    class ArticleController extends ActiveController
    {
        public $modelClass = 'commonmodelsArticle';
    
        public function actions()
        {
            $actions = parent::actions();
            unset($actions['index']);
            return $actions;
        }
    
        function actionIndex(){
            $modelClass = $this->modelClass;
            return new ActiveDataProvider([
                'query'=>$modelClass::find()->asArray(),
                'pagination' => ['pageSize'=>5],
            ]);
        }
    }
    

    访问 http://apitpl.com/articles?page=2

    搜索

    在控制器中添加方法

        function actionSearch()
        {
            return $this->modelClass::find()->where(['like', 'title', $_POST['keyword']])->all();
        }
    

    修改配置文件

            'urlManager' => [
                'enablePrettyUrl' => true,
                'enableStrictParsing' => true,
                'showScriptName' => false,
                'rules' => [
                    [
                        'class' => 'yii
    estUrlRule',
                        'controller' => 'article',
                        'extraPatterns' => [
                            'POST search'=>'search',
                        ]
                    ],
                ],
            ],
    

    访问路径 http://apitpl.com/articles/search, post方式
    body: keyword=''

    自定义资源

    继承 Controller, 不是 ActiveController
    top10

    use commonmodelsArticle;
    use yiidbQuery;
    use yii
    estActiveController;
    use yii
    estController;
    
    class TopController extends Controller
    {
    
        public function actionIndex()
        {
            $all = Article::find()
                ->select([
                    '序号' => 'article.id',
                    '标题' => 'article.title',
                    '状态' => 'article.status',
                    '作者' => 'user.username'])
                ->leftjoin('user', 'user.id=article.created_by')
                ->orderBy('序号 desc')
                ->limit(5)
                ->asArray();
    
    
    
    //        echo $all->createCommand()->getRawSql() . "
    ";
    
    
    //        $all = (new Query())
    //            ->select(['article.id', 'article.title', 'user.username'])
    //            ->from(['article', 'user'])
    //            ->where('article.created_by=user.id')
    //            ->orderBy('article.id desc')
    //            ->limit(5);
    //
    //        echo $all->createCommand()->getRawSql() . "
    ";
    
    
            return $all->all();
        }
    
    }
    

    如果函数不返回数据,而sql语句可以出数据,就调用asArray()方法

  • 相关阅读:
    BZOJ4416 [Shoi2013]阶乘字符串 【序列自动机 + 状压dp】
    BZOJ2159 Crash 的文明世界 【第二类斯特林数 + 树形dp】
    快速求原根
    BZOJ2530 [Poi2011]Party 【贪心】
    BZOJ2213 [Poi2011]Difference 【乱搞】
    BZOJ2276 [Poi2011]Temperature 【单调队列】
    多项式除法
    loj2538 「PKUWC2018」Slay the Spire 【dp】
    loj2537 「PKUWC2018」Minimax 【概率 + 线段树合并】
    Java多线程之线程的暂停
  • 原文地址:https://www.cnblogs.com/gaoyongjian/p/12132098.html
Copyright © 2011-2022 走看看