пятница, 31 января 2014 г.

Куки в Zend Framework, setcookie и header('Set-Cookie: ');

По старинке для уставновки cookie всегда пользовался setcookie, но так как сейчас использую Zend Framework 1.12 то решил воспользоваться его методами. А именно так как они рекомендуют в мануале:

  1. $this->getResponse()->setRawHeader(new Zend_Http_Header_SetCookie(
  2.     'foo''bar'NULL'/''example.com'falsetrue
  3. ));

Все бы ничего, но позже у меня возникла ошибка и только после действительного долгого поиска я обнаружил что проблема в том, что такой метод отправки cookie перезатирает все остальные куки которые уже установила страница. Дальше я нарыл, что метод setRawHeader использует встроенную функцию php - header для установки cookie:

header('Set-Cookie:  ...');

И собственно эта функция и затирает все что уже было отослано.

Погуглив я нашел, что я не один - http://stackoverflow.com/questions/5499476/is-it-ok-to-send-cookie-headers-directly-with-header-calls (см после: EDIT: AN IMPORTANT NOTICE)

После этого пришлось вернуть код обратно к setcookie.

Но меня мучает вопрос - Что я упускаю в Zend Framework? Неужели Zend не знает об этом?

Популярные сообщения