2015-07-26 3 views
1

Я пытаюсь добавить промежуточное программное обеспечение после приложения, чтобы добавить метки времени и другую информацию к своим вызовам API. Я правильно настроить свои маршруты, как он достигнет моего промежуточного ПО правильно, но когда я достигаю среднего изделия, выдается ошибка, которая является:Послепродажное промежуточное ПО не запускается Laravel

вызов функции члена положить() на не-объект

И мой промежуточный слой имеет следующий код:

public function handle($request, Closure $next) 
{ 

    $response = $next($request); 
    if($response->headers->get('content-type') == 'application/json') 
    { 
     $collection = $response->original; 
     //dd($collection); 
     $collection->put('timestamp', date("Y-m-d H:i:s")); 
     $response->setContent($collection); 
    } 

    return $response; 
} 

Я пытался д.д. ($ коллекции), но возвращают объекты, которые должны быть возвращены, так что я понятия не имею, что это неправильно. Может ли кто-нибудь указать мне правильное направление?

Спасибо!

+0

Когда вы делали dd() в коллекции, какой тип был? Видимо, не объект –

+0

Нам нужна дополнительная информация, чтобы помочь здесь. Можете ли вы запустить get_class как для объекта '$ response', так и для' $ response-> original'? Когда я пытаюсь это сделать в Laravel 5.1, '' response-> original' не существует для ответов json ('return Response :: json ([])'), поэтому он генерирует смертельный исход. '$ response-> original' является' Illuminate \ View \ View' для стандартного ответа в Laravel. Так что не может помочь без дополнительной информации. –

+0

@ jedrzej.kurylo по-видимому, он возвращается как массив: ' массива: 2 [ 1 => Entity {# 235} 2 => Entity {# 228} ] ' –

ответ

0

С @ jedrzej.kurylo-х внушения, я сделал следующие изменения:

$response = $next($request); 
    if($response->headers->get('content-type') == 'application/json') 
    { 
     $collection = array(); 
     $collection['timestamp'] = Carbon::now(); 
     $collection['data'] = $response->original; 
     $response->setContent($collection); 
    } 
    return $response; 

Оказывается, что $ response-> оригинальный возвращает массив вместо объекта, состоящего из объектов для ответа. Спасибо!

 Смежные вопросы

  • Нет связанных вопросов^_^