Yii2 rest return 一个自定义值
Yii2 rest return a custom value
我对yii2的RESTfull服务有疑问
在 cal 视图中(GET resource/{id}
)我想 return 自定义值,例如 host/resource?page=x
(如果已设置),取当前页的编号,它总和乘一 (x+1) 直到数字等于 X-Pagination-Total-Count header.
的值
所以响应将是这样的:
[
{
"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
]
可以这样做吗?我如何设置这个值的return?
预先感谢所有帮助。
编辑:添加控制器代码
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;
}
}
试试这个:
public function afterAction($action, $result){
$result = parent::afterAction($action, $result);
if($action->id == 'index') //check controller action ID
$result['custom_val'] = 111;
return $result;
}
我对yii2的RESTfull服务有疑问
在 cal 视图中(GET resource/{id}
)我想 return 自定义值,例如 host/resource?page=x
(如果已设置),取当前页的编号,它总和乘一 (x+1) 直到数字等于 X-Pagination-Total-Count header.
所以响应将是这样的:
[
{
"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
]
可以这样做吗?我如何设置这个值的return? 预先感谢所有帮助。
编辑:添加控制器代码
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;
}
}
试试这个:
public function afterAction($action, $result){
$result = parent::afterAction($action, $result);
if($action->id == 'index') //check controller action ID
$result['custom_val'] = 111;
return $result;
}