Как я могу получить доступ к объекту ответа Laravel из контроллера?

#laravel #header #response

#laravel #заголовок #ответ

Вопрос:

У меня есть промежуточное программное обеспечение, в котором я назначаю http-заголовки запросу / ответу.

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

В промежуточном программном обеспечении я также могу применить эту строку после выполнения приведенного выше, чтобы получить значение, которое я только что установил…

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

Но я хочу получить доступ к этому за пределами промежуточного программного обеспечения, но я не уверен, как вернуть объект ответа для достижения этой цели.

Как я могу получить объект $response из моего контроллера?

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

Кажется, я не могу понять, что поместить в часть WHAT GOES HERE, чтобы снова получить доступ к объекту ответа.

Обновление # 1:


Все еще нерешенный, но часть проблемы, по-видимому, заключается в том, что для добавления тегов заголовка к объекту ответа в промежуточном программном обеспечении требуется $next($request) , а закрытие $next вызывает выполнение обработки ответа после выполнения кода контроллера. Поэтому, хотя я не уверен, как настроить таргетинг на объект ответа из контроллера, не похоже, что ему будет присвоен тег заголовка до тех пор, пока он не будет назначен позже.

Я мог бы установить заголовки непосредственно в 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 . Такой подход — убить двух зайцев одним выстрелом, но это оказалось сложнее, чем я ожидал.

Комментарии:

1. Документация Laravel 5.8 по ответам.

2. Спасибо. Я несколько раз прочитал эту страницу документации и еще не нашел там ответа. 🙁