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

时间:2016-07-25 11:31:48

标签: php cookies zend-framework2

我正在尝试在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) );
            }

我得到的输出是一个总是被覆盖的对象的数组。谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

通过查看代码并根据您输出的内容,我认为问题出在System::setCookie函数中,您可以使用它来设置cookie已经存在。如果cookie已经存在,请尝试获取cookie的内容json_decode。将新值附加到对象中,然后使用更新的对象调用System::setCookie函数。

注意:显然,您需要执行上述过程,如果没有任何现有API可以调用以将值附加到现有Cookie中:)

干杯!