【问题标题】:Yii2 rest return a custom valueYii2 rest 返回一个自定义值
【发布时间】:2016-06-15 09:10:15
【问题描述】:

我有一个关于 yii2 的 RESTfull 服务的问题。

在 cal 视图(GET resource/{id})中,我想返回取当前页面编号的自定义值,例如 host/resource?page=x(如果已设置),并且它加一 (x+1) 直到数字等于 X-Pagination-Total-Count 标头的值。

所以响应会是这样的:

[
      {
        "id": 1,
        "username": "test",
        "email": "tset@email.it",
        "status": 10,
        "created_at": "2015-03-15 10:40:34"
      }
      {
        "id": 2,
        "username": "test1",
        "email": "tset1@email.it",
        "status": 10,
        "created_at": "2014-05-12 12:50:26"
      }
      .
      .
      .
     "custom_val" = x+1
]

可以这样做吗?如何设置此值的返回? 提前感谢所有帮助。

编辑:添加控制器代码

class UserController extends \yii\rest\ActiveController 
{

    // Model 'User'
    public $modelClass = 'api\modules\v1\models\User';

    /**
     * Behaviors
     * 
     * @return mixed
     */
    public function behaviors()
    {
        $behaviors = parent::behaviors();

        $behaviors['contentNegotiator']['formats']['application/json'] = \yii\web\Response::FORMAT_JSON;
        $behaviors['authenticator'] = [
            'class' => \yii\filters\auth\HttpBasicAuth::className(),
        ];


        return $behaviors;
    }

    /**
     * Actions
     * 
     * @return mixed
     */
    public function actions() 
    {

        $actions = parent::actions();


        unset($actions['delete'], $actions['create'], $actions['update']);

        $actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];

        return $actions;

    }

    /**
     * Data Provider
     * 
     * @return  yii\data\ActiveDataProvider 
     */
    public function prepareDataProvider()
    {
        $data = User::find(); 

        $provider = new \yii\data\ActiveDataProvider([
            'query' => $data
        ]);

        return $provider;
    }

}

【问题讨论】:

  • 发布视图和控制器代码
  • 查看?它是 REST 它以我发布的方式返回序列化数据,我可以发布代码
  • 对了,控制器里的代码你搞定了吗?

标签: rest yii2 yii-rest


【解决方案1】:

试试这个:

public function afterAction($action, $result){

    $result = parent::afterAction($action, $result);

    if($action->id == 'index') //check controller action ID
        $result['custom_val'] = 111;

    return $result;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多