Как добавить код состояния HTTP и текст состояния в ответ с помощью ellipsesynergie/api-response в Laravel 5?

Нам нужно будет добавить код состояния в ответ.

Нравиться

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.

Пожалуйста, помогите нам в этом.

заранее спасибо


person Maulik Kanani    schedule 13.05.2015    source источник


Ответы (1)


Просто создайте свой собственный класс 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);
person Bostjan    schedule 13.05.2015