正常情况下,返回结果的操作会由控制器执行。

return [
    'code' => 0,
    'msg' => "短信已发送"
];

对于返回类型为数组的情况,yii2 会自动将其转化为 JSON 字符格式,并修改返回类型为 JSON。

但如果是在模型中就要直接返回呢? 官方文档给出了几组范例,比如说抛出异常,浏览器跳转,发送文件和发送相应。

比较符合需求的,就是最后一项了,提到的 \yii\web\Response::send(),试了一下这个方法属于实例方法,直接调用是不行的,需要通过实例进行调用。

以下为是实操代码($response 即 为 \yii\web\Response 的实例引用):

$response = \Yii::$app->response;
$response->format = \yii\web\Response::FORMAT_JSON;
$response->data = [
    'code' => 0,
    'msg' => "短信已发送"
];
$response->send();