如何创建一个对象数组并将其动态存储在cookie中


How to create an array of objects and store it in a cookie dynamically

我正试图在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中,则您需要执行上述过程:)

干杯!