我正试图在ZF2控制器中创建一个cookie。当我在"hotelPage"上时,控制器应该创建一个具有酒店价值的cookie。我需要根据我当前所在的酒店页面向cookie中动态添加数据
$cookieData = $this->getRequest()->getCookie();
if(empty($cookieData->recently_viewed)){ // cookie doesn't exists
// get data from hotel object
$recentlyViewedHotel = array('hotelId' => $hotel->id, 'hotelName' => $hotel->name);
array_push($hotels, $recentlyViewedHotel);
System::setCookie("recently_viewed", json_encode($hotels) );
} else{ // cookie already created, add more values to the cookie
$recentlyViewedHotel = array('hotelId' => $hotel->id, 'hotelName' => $hotel->name);
System::setCookie("recently_viewed", json_encode($hotels) );
}
我得到的输出是一个总是被覆盖的对象的数组。有人能告诉我我做错了什么吗?
通过查看代码并根据您获得的输出,我认为问题出在System::setCookie
函数上,当您的cookie已经存在时,您使用该函数来设置cookie。如果cookie已经存在,请尝试获取cookie的内容,json_decode
。将新值附加到对象中,然后使用更新的对象调用System::setCookie
函数。
注意:很明显,如果没有任何现有的API可以调用来将值附加到现有的cookie中,则您需要执行上述过程:)
干杯!