Php 在Laravel 5中为与json方法链接的响应帮助程序添加宏时出错

Php 在Laravel 5中为与json方法链接的响应帮助程序添加宏时出错,php,laravel,laravel-5,laravel-response,Php,Laravel,Laravel 5,Laravel Response,我正在开发一个仅使用API路由的Laravel5应用程序。我创建了一个宏来扩展响应助手的addcookie方法。但是我遇到了一个错误,我的宏不存在 我们使用此选项返回响应: return response()->json($data$status) ->饼干( “COOKIE_NAME”, $value, 美元到期, '/', app()->environment('production')?config('app.domain'):null, app()->environment('produ

我正在开发一个仅使用API路由的Laravel5应用程序。我创建了一个宏来扩展响应助手的addcookie方法。但是我遇到了一个错误,我的宏不存在

我们使用此选项返回响应:

return response()->json($data$status)
->饼干(
“COOKIE_NAME”,
$value,
美元到期,
'/',
app()->environment('production')?config('app.domain'):null,
app()->environment('production'),
符合事实的
);
由于过期后的数据对于具有cookie的所有端点总是相同的,因此我想创建一个宏,该宏将自动将该数据添加到cookie中,并将代码简化为:

return response()->json($data$status)
->httpCookie('COOKIE\u名称,$value,$expiration);
我已经创建了一个
ResponseServiceProvider
,并使用
Response::macro
方法添加了宏

这是我的宏代码:

公共函数启动()
{
响应::宏('httpCookie',函数($name、$value、$expiration){
$isProd=app()->环境(“生产”);
返回响应()->cookie(
$name,
$value,
美元到期,
'/',
$isProd?config('app.domain'):null,
$isProd,
符合事实的
);
});
}
然后尝试测试端点时,我遇到了一个错误:

BadMethodCallException
Method Illuminate\Http\JsonResponse::httpCookie does not exist.
我怎样才能解决这个问题?谢谢。

当我查看该类时,响应Facade代理该类。尽管ResponseFactory也是可宏化的,但它用于不同的目的

因此,请在正确的类中添加一个宏,在这种情况下,我认为:


服务提供商提供的
响应
类的完整命名空间是什么?(它可能是
illumb\Support\Facades\Response
illumb\Http\Response
)@Shizzen83我正在使用
illumb\Support\Facades\Response
你应该解释为什么它在底层类上工作,而不是在外观本身上。这对我来说很有用。但是你能解释一下为什么这在
illible\Http\Response
上起作用,而不是像Shizzen83所说的那样
illible\Support\Facades\Response
?我补充了进一步的解释。
use Illuminate\Http\Response;

public function boot()
{
  Response::macro('httpCookie', function ($name, $value, $expiration) {
    $isProd = app()->environment('production');
    return $this->cookie(
      $name, 
      $value,
      $expiration,
      '/',
      $isProd ? config('app.domain') : null,
      $isProd,
      true
    );
  });
}