我可以配置yii2函数afterAction返回我的api数据


Can I configure yii2 function afterAction to return my api data?

我正在研究我的yii2 api,我正在寻找一种从控制器动作获取数据的方法。这是我在json或xml中需要的响应的示例。

{"success": true,
 "message": {data},
 "session": "U0phRm51az",
 "metadata": "metadata"
}

我正在从控制器获取消息,而成功检查响应是否OK,会话是会话数据,元数据是其他数据。我的动作看起来像这样。

public function actionIndex(){
    $data = array();
}

所有这些都使用相同的函数,所以我不想在所有操作中重复。我想知道如何使用我的模块类(不是配置文件)上的响应组件的afterActionbeforeSend事件从每个动作中获得$data。如果这是不可能的,我怎么能做到这一点?

如果你的动作返回数据作为一个数组,你可以添加更多的东西到该数组在afterAction方法的控制器

public function actionIndex()
{
    //...
    //$data contains an array
    return [
        'data' => $data
    ];
}
public function afterAction($action, $result)
{
    $result = parent::afterAction($action, $result);
    $result['session'] = '...';
    $result['metadata'] = '...';
    return $result;
}