我在同一个请求中的控制器中遇到cookie的问题我没有立即在模板中使用它。
然而,当我重装时,它会出现。
控制器
$response = $this->render(':frontend/homepage:homepage.html.twig');
$now = new \DateTime();
$response->headers->setCookie
(
new Cookie
(
'affiliateTracker',
serialize
(
array
(
'name' => 'John Doe'
)
),
$now->modify('+24 hours'), '/'
)
);
$response->sendHeaders();
return $response;
模板
{% if app.request.cookies.get('affiliateTracker') %}
<div class="alert text-center alert-success">
<i class="fa fa-user"></i> <strong>Your Name:</strong> {{ app.request.cookies.get('affiliateTracker').name }}
</div>
{% endif %}
答案 0 :(得分:0)
您不能立即获取Cookie,因为它是在answer中写的。 其中一个解决方案是使用javascript在客户端获取它:
<script>
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
if(getCookie('affiliateTracker') !== ""){
document.write( '<div class="alert text-center alert-success"><i class="fa fa-user"></i> <strong>Your Name:</strong>'+getCookie('affiliateTracker')+'</div>' );
}
</script>