我创造restful apis,我有一个函数发送响应数据yii1这样
public function sendResponse($data)
{
header('Content-Type: application/json; charset=utf-8');
echo CJSON::encode($data);
exit;
}
Run Code Online (Sandbox Code Playgroud)
CJSON不可用,Yii2我怎么做Yii2
aro*_*hev 25
无需像这样手动设置标题.
在特定的操作/方法中,您可以这样设置:
use Yii;
use yii\web\Response;
...
public function actionIndex()
{
Yii::$app->response->format = Response::FORMAT_JSON;
}
Run Code Online (Sandbox Code Playgroud)
然后在那之后返回一个像这样的简单数组:
return ['param' => $value];
Run Code Online (Sandbox Code Playgroud)
您可以在官方文档此属性在这里.
对于使用特殊ContentNegotiator过滤器的多个动作更灵活的方法:
/**
* @inheritdoc
*/
public function behaviors()
{
return [
[
'class' => ContentNegotiator::className(),
'only' => ['index', 'view']
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
],
];
}
Run Code Online (Sandbox Code Playgroud)
有更多设置,您可以在官方文档中查看.
至于REST,基础yii\rest\Controller已经为它设置了json和xml:
'contentNegotiator' => [
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
'application/xml' => Response::FORMAT_XML,
],
],
Run Code Online (Sandbox Code Playgroud)