php - 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。