如何在使用ellipsesynergie / api-response的响应中添加HTTP状态代码和状态文本在Laravel 5中?

时间:2015-05-13 11:24:31

标签: php laravel-5 http-status-code-301 laravel-response

我们需要在响应中添加状态代码。

喜欢

public function withArray(array $array, array $headers = array()) {
if ($this->statusCode == '200') {
$array = array('code' => $this->statusCode , 'success' => TRUE) + $array;
} else {
$array = array('code' => $this->statusCode, 'success' => FALSE) + $array;
}
return response()->json($array, $this->statusCode, $headers);
}

目前,我们已在"ellipsesynergie/api-response/src/Laravel/Response.php"修改了库代码。

但我觉得。这不是好方法。

请您建议我如何在不更改库代码的情况下将其添加到所有响应中?

或者是否有任何方法可以从控制器添加状态代码以进行最终响应。

实际上,我们需要最终回复,例如" http://screencast.com/t/nmWF7PYU"。

请帮助我们。

提前致谢

1 个答案:

答案 0 :(得分:0)

只需制作自己的Response课程即可EllipseSynergie\ApiResponse\Laravel\Response。我们称之为App\ApiResponse\MyResponse

使用您自己的方法覆盖EllipseSynergie\ApiResponse\Laravel\Response中的所有方法。 例如:

public function withArray(array $array, array $headers = array())
{
    $array['code'] = $this->statusCode;
    $array['success'] = true;

    return parent::withArray($array, $headers);
}

然后在你的app\Providers\AppServiceProvider.php注册表中,你会上课:

$myResponse = new \App\ApiResponse\MyResponse(new \League\Fractal\Manager());    
$this->app->instance('EllipseSynergie\ApiResponse\Contracts\Response', $myResponse);