首页 > 解决方案 > 最近在 laravel 7 中通过 cookie 浏览的产品一次只能保存 1 个产品

问题描述

我已经尝试了我在这里找到的脚本[Laravel/PHP] 如何制作“最近查看的帖子”小部件

它似乎有效,但只在 cookie 中保存了一个产品,而不是 5 个。

下面是我目前在我的productController

        $num_to_store = 5;
        $minutes_to_store = 1;
        $current_page['id'] = $product_material->id;
        $current_page['title'] = $material_category->title.' '.$product_material->title;
        $current_page['url'] = $request->url();
        $recent = Cookie::get('recently_viewed');
        $recent = json_decode($recent, true);
        if($recent){
            foreach ($recent as $key => $val){
                if($val['url'] == $current_page['url']){
                    unset($recent[$key]);
                }
            }
        }

        $recent[ time() ] = $current_page;

        if(sizeof($recent) > $num_to_store){
            $recent = array_slice($recent, sizeof($recent)-5, sizeof($recent), true);
        }

        Cookie::queue('recently_viewed_content', json_encode($recent), $minutes_to_store);
        $recently_viewed_content = json_decode(Cookie::get('recently_viewed_content'), TRUE)

这是我在刀片文件中的代码:

            @if($recently_viewed_content)
            @php(krsort( $recently_viewed_content ))
            @foreach($recently_viewed_content as $rvc)
                {{ $rvc['title'] }}
                {{ $rvc['url'] }}
            @endforeach
            @endif

不确定它有什么问题。

我也尝试从这里实现类似的逻辑Ecommerce 最近查看的产品

但这对我也不起作用。

任何帮助都会得到帮助

标签: phplaravellaravel-7

解决方案


解决了。

这是一个简单的错字Cookie::get('recently_viewed');。应该是Cookie::get('recently_viewed_content');


推荐阅读