Laravel не создается настраиваемый заголовок ответа - PullRequest
0 голосов
/ 07 мая 2020

Когда запрос равен json, все в порядке, я получил свой заголовок «xxx», но когда это прямой запрос на страницу - мой заголовок не существует в ответе.

Я пробовал любой вариант response()->header , response('content',200,['xxx'=>'xxx']) и безуспешно

Мой код в контроллере:

return $request->wantsJson()
            ? response([
                'html'          => view('components.tarif-list', compact('tarifs'))->render(),
                'pagination'    => $tarifs->appends(request()->query())->links()->toHtml(),
                'head'          => $seo_block,
                'stats'         => $stats
            ])->header('xxx','xxx')
            : response(view('home',compact('tarifs','seo_block'))->render())->header('xxx','xxx');

home.blade. php

@extends('layouts.main')

@section('content')
    <x-filters/>
    <div id="head" class="alert alert-success" role="alert">
        @if(!empty($seo_block))
        {!! $seo_block !!}
            @elseif($tarifs->isEmpty())
            empty
            @else
            hello
        @endif
    </div>
    {{$tarifs->appends(request()->query())->links()}}
    <table id="tarif-list" class="table table-hover table-striped">
        <x-tarif-list :tarifs="$tarifs"/>
    </table>
    {{$tarifs->appends(request()->query())->links()}}
@endsection

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

проблема была в контроллере до того, как ответ был dump(), и, как мы знаем, заголовки должны быть первым содержимым на странице.

Но почему php или laravel не говорят об этом. По умолчанию php предупреждение для него:

PHP Warning:  Cannot modify header information - headers already sent by..........
0 голосов
/ 07 мая 2020

Если вы добавили эту строку кода

response(view('home',compact('tarifs','seo_block'))->render())->header('xxx','xxx')

, вы увидите этот ответ

Symfony\Component\HttpFoundation\ResponseHeaderBag {#2878
  #computedCacheControl: array:2 [
    "no-cache" => true
    "private" => true
  ]
  #cookies: []
  #headerNames: array:3 [
    "cache-control" => "Cache-Control"
    "date" => "Date"
    "xxx" => "xxx"
  ]
  #headers: array:3 [
    "cache-control" => array:1 [
      0 => "no-cache, private"
    ]
    "date" => array:1 [
      0 => "Thu, 07 May 2020 11:27:31 GMT"
    ]
    "xxx" => array:1 [
      0 => "xxx"
    ]
  ]
  #cacheControl: []
}

Итак, ключи есть, но как вы получаете заголовки в вашем файле лезвия?

...