Нам нужно будет добавить код статуса в ответ.
подобно
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».
Пожалуйста, помогите нам в этом.
заранее спасибо
Просто сделай свой собственный 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);
Других решений пока нет …