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