首页 > 解决方案 > Laravel 8 每次查看产品,更新数组并将其保存到 cookie

问题描述

我正在尝试实现最近在我的应用程序中查看的产品。我需要将客户查看的产品添加到 cookie 中,稍后我会将它们推送到我的数据库中。

在我的ProductController show功能中,我这样做了。

        $item_array[] = [ $product->id ];
        $item_data    = json_encode( $item_array );
        Cookie::queue( 'recently_viewed', $item_data, 10 );

在我的刀片中,我开始检查。

@if(Cookie::get('recently_viewed'))
    @php
        $recently_views = json_decode(Cookie::get('recently_viewed'), true);
    @endphp
    @foreach($recently_views[0] as $recently_view)
        {{ $recently_view }}
    @endforeach
@endif

它有效,但是,我只看到一个产品 id 就是cookie我所站立的那个。

如何解决此问题$item_array[]以将电流添加id到此数组中。

更新

我已经将我的控制器更新为这样的东西。

$cookieValue = '';
$cookieValue .= $request->cookie( 'recently_viewed' );
$cookieValue .= (string) $product->id;

Cookie::queue( 'recently_viewed', json_encode( $cookieValue ), 10 );

并且在视野中

@if(Cookie::get('recently_viewed'))
        @php
            $cookie = Cookie::get('recently_viewed');
            $cookieArray = explode(',', json_decode($cookie));
        @endphp
        {{--{{ dd($cookieArray) }}--}}
        @foreach($cookieArray as $recently_view)
            {!! $recently_view !!}
        @endforeach
    @endif

但现在我得到了结果

array:1 [▼ 
   0 => ""\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"4\\\\\\\\\\\\\\\"4\\\\\\\"1\\\"1\"1"1" 
]

任何可以解决这个问题的方法。

[
    0=>4,
    1=>1,
    2=>5,
]

更新 2 我已经解决了这个问题,但是json_decode

$cookieValue = "";
$cookieValue .= json_decode( $request->cookie( 'recently_viewed' ) );
$cookieValue .= (string) $product->id . ',';

Cookie::queue( 'recently_viewed', json_encode( $cookieValue ), 10 );

最新的更新是忽略重复的 id。

标签: phplaravelcookieslaravel-8

解决方案


推荐阅读