Прикрепление cookie к представлению в Symfony2

Я нашел несколько вопросов и страниц, касающихся файлов cookie в Symfony2, но, похоже, нет четкого консенсуса относительно того, как именно это должно работать. Я, конечно, могу просто вернуться к использованию встроенной функции PHP setcookie , но я чувствую, что это должно быть легко сделать и с Symfony2.

У меня есть действие в моем контроллере, из которого я просто хочу вернуть представление с прикрепленным файлом cookie. До сих пор я видел в основном такие примеры:

use Symfony\Compentnt\HttpFoundation\Response;

public function indexAction() {
  $response = new Response();
  $response->headers->setCookie(new Cookie('name', 'value', 0, '/');
  $response->send();
}

Проблема в том, что он отправляет ответ ... и не отображает представление. Если я устанавливаю файл cookie без отправки заголовков, представление отображается, но заголовок (файл cookie) не отправляется.

Я нашел метод sendHeaders () в объекте Response, поэтому теперь я вручную вызываю его в своем действии перед возвратом, и это, похоже, работает:

public function indexAction() {
  ...
  $response->sendHeaders();
  return array('variables' => 'values');
}

Но действительно ли это ожидаемый шаблон использовать? В предыдущих версиях symfony я мог устанавливать заголовки в своем контроллере и ожидать, что контроллер представления обработает отправку всего, что я отправил. Теперь кажется, что я должен вручную отправить их из действия, чтобы заставить его работать, то есть я должен вызывать это из любого действия, в котором я установил заголовки. Так ли это или есть что-то, чего мне не хватает, что настолько очевидно, что никто не удосужился даже упомянуть об этом ни в одной документации?

6
задан James Alday 27 October 2011 в 17:11
поделиться