0
내 탐색 헤더 템플릿에 쿠키를 실행하고 표시하려고합니다.symfony2 페이지로드 후 생성 된 쿠키
현재 내 컨트롤러는 사용자가 로그인했는지 확인합니다. 로그인하지 않은 상태에서 쿠키를 확인합니다. 쿠키가 없으면 일반 쿠키가 만들어집니다. 그리고 마지막으로 템플릿이로드됩니다.
현재 쿠키가 생성되고 템플릿이 제대로로드되지만 템플릿을 렌더링 할 때 전달 된 값은 페이지가로드 된 후에 나타나지 않습니다. Cookie가 생성 된 것을 볼 수 있으며, 페이지를 2 번째로 새로 고침하면 모든 것이 의도 한대로 작동합니다.
그래서 헤더가 예상대로 전송되지 않는다는 것을 알고 있습니까? 그러나 Symfony2에서이 작업을 수행하는 적절한 방법을 알 수는 없습니다. 당신은 그 문제가 이것을 시도의 생성 된 응답을 사용하지 않는
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Cookie;
class navController extends Controller {
public function displayNavAction() {
$userState = '';
$userZipcode = '';
if ($this->container->get('security.context')->getToken() != null) {
// To check if user is authenticated or anonymous
if ($this->container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY') === true) {
$user = $this->getUser();
$userCity = $user->getCity();
$userState = $user->getState();
$userZipcode = $user->getZipcode();
} else {
//User is not logged in, so check for cookie.
$request = $this->get('request');
$cookies = $request->cookies;
if ($cookies->has('city'))
{
//User not logged in, but cookie exists. So use cookie.
$userCity = $cookies->get('city');
} else {
//User not logged in, and no existing cookie. So create cookie.
$cookieGuest = array(
'name' => 'city',
'value' => 'seattle',
'path' => '/',
'time' => time() + 3600 * 24 * 7,
false,
false
);
$cookie = new Cookie($cookieGuest['name'], $cookieGuest['value'], $cookieGuest['time'], $cookieGuest['path']);
$response = new Response();
$response->headers->setCookie($cookie);
$response->sendHeaders();
$userCity = $cookies->get('city');
}
}
}
return $this->render(
'trrsywxBundle:Default:nav.html.twig', array('city' => $userCity, 'state' => $userState, 'zipcode' => $userZipcode, 'tempjunk' => $userCity));
}
}