Yii2 “Response content must not be an array” 报错解决方法
在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',
],