1

我正在尝试在应用程序之后添加一个中间件,以便我可以将时间戳和其他信息添加到我的 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 ),但它返回应该返回的对象,所以我不知道出了什么问题。谁能指出我正确的方向?

谢谢!

4

1 回答 1

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 返回一个数组,而不是一个由响应对象组成的对象。谢谢!

于 2015-07-27T16:44:23.040 回答