[英]How to set a dynamic cookie on laravel 5.6 or JavaScript using js-cookie
以前,我的英语不是我的母语,所以...很抱歉所有的拼写/错别字和其他。
我正在这个网站上工作,它需要向所有用户显示宣传视频(它必须是模式的)。 条件如下:
促销视频需要显示在网站的任何页面上。
如果用户看到了促销,它将在一周后再次显示给同一用户(如果促销仍处于活动状态)。
如果促销视频被另一个促销视频删除,则它必须显示新的促销视频(例如:如果用户在第1天和第3天访问该网站并看到该促销,则该促销视频已被删除或到期,而另一个促销视频已被设置,如果在一周过去后再次访问该网站,则需要向该用户显示该信息。
我当时在考虑使用Laravel Cookie,但被告知使用它们不是一个好习惯。 如果是这样,为什么?
现在,该应用程序正在使用js-cookie,并使用它来设置一些cookie。 有可能完成我想要的吗?
这是我代码的一部分
在我的ViewServiceProvider.php上,我有这个
public function boot()
{
View::composer('layouts.partials.modals', PromotionalVideoComposer::class);
}
在PromotionalVideoComposer.php上
public function compose(View $view)
{
$view->with('promotionalVideo', PromotionalVideo::active()->pluck('link')->first());
}
在partiasl.modals.blade.php上
// some modals
<!-- Modal Promotional Video -->
@if (isset($promotionalVideo))
<div class="modal fade modal-player" id="promotional-video" role="dialog" tabindex="-1">
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close" dusk="close-promotional-video"><span aria-hidden="true">×</span></button>
<div class="modal-body player-container">
<iframe src="{{ $promotionalVideo }}" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</div><!-- .modal-header -->
</div><!-- .modal-content -->
</div><!-- .modal-dialog modal-lg -->
</div><!-- .modal fade -->
@endif
和app.js
if (Cookie.get('promotionalVideoDisplayed') === undefined) {
$('#promotional-video').modal('show');
Cookie.set('promotionalVideoDisplayed', true, { expires: 7 });
}
// On close video modal stop/delete video iframe
$("#promotional-video").on('hidden.bs.modal', function () {
var $iframe = "#promotional-video iframe";
$($iframe).remove();
});
我建议不要使用cookie(可以将其删除或将其设置为不显示,从而多次显示相同的视频),而不是建议使用“用户ID”,“促销ID”和“上次查看”日期添加数据库条目。
然后从中读取内容,以决定是否显示视频。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.