Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改HTTP头中的状态代码,而不影响Yii 1 Restful API中的返回数据_Php_Api_Exception_Yii_Header - Fatal编程技术网

Php 更改HTTP头中的状态代码,而不影响Yii 1 Restful API中的返回数据

Php 更改HTTP头中的状态代码,而不影响Yii 1 Restful API中的返回数据,php,api,exception,yii,header,Php,Api,Exception,Yii,Header,我想返回Yii 1中带有HTTP错误代码的数据。所以我用下面的方法来获取数据 $code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode(); $this->setOutputError($ex->getMessage()); $this->setOutputCode($c

我想返回Yii 1中带有HTTP错误代码的数据。所以我用下面的方法来获取数据

  $code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode();
            $this->setOutputError($ex->getMessage());
            $this->setOutputCode($code);
当我以这种方式使用它时,API返回的数据带有200个错误代码,如下所示

但我想改变头状态200,所以我抛出了这个异常,然后输出数据也改变了。我只想更改标题状态

$code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode();
            $this->setOutputError($ex->getMessage());
            $this->setOutputCode($code);

            throw new CHttpException(400, 'Bad Request');

Yii 1.1没有响应抽象,您需要使用
http\u response\u code()
更改响应状态代码:

$code = (0 == $ex->getCode()) ? (isset($ex->statusCode) ? $ex->statusCode : 500) : $ex->getCode();
$this->setOutputError($ex->getMessage());
$this->setOutputCode($code);

http_response_code(400);

或者,您也可以使用
header()
,但这更复杂。

您可以在
return
语句
\Yii::$app->response->statusCode=XXX
之前设置代码,其中
XXX
是一个新的状态代码。您已经在代码中添加了
CHttpException
-您确定使用的是Yii 2而不是Yii 1吗?@Bizley抱歉Yii 1