如何创建对象数组并将其动态存储在 cookie 中
How to create an array of objects and store it in a cookie dynamically
我正在尝试在 ZF2 控制器中创建一个 cookie。当我在 "hotelPage" 上时,控制器应该创建一个包含酒店值的 cookie。我需要根据我当前所在的 hotelPage 向 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 :)
干杯!
我正在尝试在 ZF2 控制器中创建一个 cookie。当我在 "hotelPage" 上时,控制器应该创建一个包含酒店值的 cookie。我需要根据我当前所在的 hotelPage 向 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 :)
干杯!