首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用js-cookie在laravel5.6或JavaScript上设置动态cookie

如何使用js-cookie在laravel5.6或JavaScript上设置动态cookie
EN

Stack Overflow用户
提问于 2018-12-20 01:35:53
回答 1查看 310关注 0票数 0

在此之前我的英语不是我的母语,所以…对于所有的拼写/打字错误和其他,我很抱歉。

我在这个网站上工作,它需要向所有用户显示一个宣传视频(它需要是一个模式)。以下是条件:

宣传视频需要在网站的任何页面上显示。

如果用户看到了促销,一周后将再次向同一用户显示(如果促销仍处于活动状态)。

如果该促销视频被另一个促销视频删除,则必须显示新的促销视频(例如:如果用户访问该站点并在第1天看到该促销,并且在第3天看到该促销已被删除,或者该促销已过期并且设置了另一促销,则如果该用户在一周过去之前再次访问该站点,则需要向该用户显示该促销视频)。

我正在考虑使用laravel cookie,但我被告知使用它们不是一个好的做法。如果有,原因何在?

现在,应用程序正在使用js-cookie,并且使用它设置了一些cookie。有没有可能用它完成我想要的东西?

以下是我的代码的一些部分

在我的ViewServiceProvider.php上我有这个

代码语言:javascript
复制
public function boot()
{
    View::composer('layouts.partials.modals', PromotionalVideoComposer::class);

}

在PromotionalVideoComposer.php上

代码语言:javascript
复制
public function compose(View $view)
{
    $view->with('promotionalVideo', PromotionalVideo::active()->pluck('link')->first());
}

在partiasl.modals.blade.php上

代码语言:javascript
复制
// 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">&times;</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

代码语言:javascript
复制
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();
});
EN

回答 1

Stack Overflow用户

发布于 2018-12-20 01:54:42

而不是使用cookies (可以删除或不设置,以便多次显示相同的视频),我建议添加一个数据库条目,用于“用户id”、“促销id”和“上次查看”日期。

然后从其中读取,以决定是否显示视频。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53856514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档