Yii2 “Response content must not be an array” 报错解决方法

作者:IT技术圈子 浏览量:658   发表于 2023-09-23 11:29 标签:

在Yii2中直接return数组、JSON、XML等格式时,会提示“Response content must not be an array” 报错,具体解决方法如下:

一、问题代码

/**
 * 获取省份
 */
public function actionGetprovince() {
      $service = new Addressservice();
      $province_list = $service->getProvinceList();
      return $province_list;
}

/**
* 获取省份
 */
public function getProvinceList() {
      $data = Province::find()->all();
      return $data;
}

报错原因:yii2默认Response Format为html格式,返回json等格式需格式数据。

二、解决方法

方法一

如果是单独某个方法需要返回json或其他格式数据,直接在方法return数据前加上:\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

/**
 * 获取省份
 */
public function actionGetprovince() {
      $service = new Addressservice();
      $province_list = $service->getProvinceList();
      \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;// 返回json格式数据
      return $province_list;
}

方法二

修改配置文件\backend\config\main.php(这里是advanced版本,basic版是web.php文件),注意,所有控制器返回的数据格式都会按照这里的格式:

'response' => [                 
    'format' => yii\web\Response::FORMAT_JSON, 
    'charset' => 'UTF-8',
 ],