如何从控制器内部访问Laravel响应对象?

时间:2019-04-19 21:56:45

标签: laravel header response

我有中间件,在其中我将HTTP标头分配给请求/响应。

$response = $next($request)->header('x-robots-tag', 'noindex', false);

在中间件中,我还可以在执行上述操作后应用此行,以获取我刚刚设置的值...

echo $response->headers->get('x-robots-tag');

但是,我想在中间件之外访问它,但是我不确定如何获取Response对象来实现这一目标。

如何从控制器中获取$ response对象?

$response = \WHAT\GOES\HERE?;
echo $response->headers->get('x-robots-tag');

我似乎无法弄清楚要放入 \ WHAT \ GOES \ HERE 部分的内容,以便再次访问响应对象。

更新#1:


仍未解决,但部分问题似乎是为了将标头标签添加到中间件中的Response对象需要$next($request),而$ next Closure导致响应处理在控制器代码之后完成已执行。因此,即使我不确定如何从控制器内部定位Response对象,也要等到以后再分配header标签。

我可以使用以下中间件直接在PHP中设置标头

public function handle($request, Closure $next /*, $tags */)
{
    $tags = array_except(func_get_args(), [0,1]);
    if( count($tags) > 0){
        header('x-robots-tag: ' . implode(', ', $tags));
    }
    return  $next($request);
}

,然后通过将其从headers_list()中拉出来在控制器中进行访问,但这并不理想,并且可以在laravel方式之外工作...

对于上下文,此想法是将中间件分配给路由,并使用中间件为x-robots-tag响应头分配所需的属性。 noindex, nofollow,无论如何……然后,我希望捕捉到这一点,并使用提供给x-robots-tag的数据相应地填充等效的meta标签。两只鸟只用一种石头般的方法,但事实证明,这比我预期的要困难。

0 个答案:

没有答案