Не могу установить новое печенье - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь установить cookie для сохранения выбора локали.
Используя событие kernel.response, я сделал это:

public function setCookie(FilterResponseEvent $event) {
    /** @var Response $response */
    $response=$event->getResponse();
    $cookie=new Cookie('_locale', $event->getRequest()->attributes->get('_locale'), strtotime('now + 1 year'), '/', $event->getRequest()->getHttpHost());
    $response->headers->setCookie($cookie);
}

_locale, если он не существует,устанавливается из события kernel.request.

Проблема заключается в том, что после получения ответа в веб-браузере куки не установлены.
Его даже нет в дампе ответа.

свалка веток

ParameterBag {#13 ▼
  #parameters: array:2 [▼
    "PHPSESSID" => "5aulgi7dbut4mfjmpgvc48cr2o"
    "REMEMBERME" => "QXBwQnVuZGxlXEVudGl0eVxVc2VyOmNISmxZMmxsYkM1bllXMWxjMEJuYldGcGJDNWpiMjA9OjE1NTAzMzM1OTM6ODFiNTllMmU0MDA4YjdiOWU1Y2Q0ZjJlN2E4Y2ExZWUxOTdkOWE1YjIxNDA0NDdmZTU2MGRj ▶"
  ]
}
HeaderBag {#16 ▼
  #headers: array:11 [▼
    "cookie" => array:1 [▼
      0 => "PHPSESSID=5aulgi7dbut4mfjmpgvc48cr2o; REMEMBERME=QXBwQnVuZGxlXEVudGl0eVxVc2VyOmNISmxZMmxsYkM1bllXMWxjMEJuYldGcGJDNWpiMjA9OjE1NTAzMzM1OTM6ODFiNTllMmU0MDA4YjdiOWU1Y2Q0ZjJlN2E4Y2ExZWUxOTdkOWE1YjIxNDA0NDdmZTU2MGRjOGFiMTAwOWZhZA%3D%3D ◀"
    ]
  ]
}

"Интересный факт", хотя, если я добавлю dump($event); exit(); после $response->headers->setCookie($cookie);, я смогу увидеть свой файл cookie в event.response.headers

kernel.response dump

FilterResponseEvent {#995 ▼
  -response: Response {#903 ▼
    +headers: ResponseHeaderBag {#994 ▼
      #cookies: array:1 [▼
        "sphere.gdn" => array:1 [▼
          "/" => array:1 [▼
            "_locale" => Cookie {#154 ▼
              #name: "_locale"
              #value: "en"
              #domain: "sphere.gdn"
              #expire: 1581376164
              #path: "/"
              #secure: false
              #httpOnly: true
              -raw: false
              -sameSite: null
            }
          ]
        ]
      ]
    }
}

Мои события прослушивателя обнаружены Symfony

Registered Listeners for "kernel.request" Event
===============================================

 ------- ------------------------------------------------------------------------------------------------- ---------- 
  Order   Callable                                                                                          Priority  
 ------- ------------------------------------------------------------------------------------------------- ---------- 
  #10     AppBundle\Service\LocaleHandlerService::setLocale()                                               0         
 ------- ------------------------------------------------------------------------------------------------- ----------

Registered Listeners for "kernel.response" Event
================================================

 ------- -------------------------------------------------------------------------------------------- ---------- 
  Order   Callable                                                                                     Priority  
 ------- -------------------------------------------------------------------------------------------- ---------- 
  #1      AppBundle\Service\LocaleHandlerService::setCookie()                                          0         
 ------- -------------------------------------------------------------------------------------------- ---------- 

Может кто-нибудь подсказатьчто мне не хватает, чтобы установить мое печенье?

1 Ответ

0 голосов
/ 11 февраля 2019

Попробуйте установить.

$cookie=new Cookie('_locale', 'en', strtotime('now + 1 year'));

И читать

$cookies = $request->cookies;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...