路线后中间件未触发Laravel

时间:2015-07-26 18:34:57

标签: php laravel-5 laravel-middleware

我正在尝试在应用之后添加中间件,以便我可以向API调用添加时间戳和其他信息。我已正确设置路由,因为它正确到达我的中间件,但当我到达中间件时,会抛出一个错误:

  

在非对象上调用成员函数put()

我的中间件有以下代码:

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;
}

我试过dd($ collection),但它返回应该返回的对象,所以我不知道出了什么问题。有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分: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-> original似乎返回一个数组,而不是一个由响应对象组成的对象。 谢谢!