Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Laravel:当未注册用户第一次访问网站时,显示对话框,确认他们是18岁+;_Jquery_Twitter Bootstrap_Laravel_Cookies_Laravel 5 - Fatal编程技术网

Jquery Laravel:当未注册用户第一次访问网站时,显示对话框,确认他们是18岁+;

Jquery Laravel:当未注册用户第一次访问网站时,显示对话框,确认他们是18岁+;,jquery,twitter-bootstrap,laravel,cookies,laravel-5,Jquery,Twitter Bootstrap,Laravel,Cookies,Laravel 5,我正在使用Laravel 5.2,我需要创建以下内容:当未注册用户首次访问网站时,显示对话框以确认他或她是18岁以上。我不确定实现这样的东西的最佳方式是什么,我从定义一个新的agmiddleware开始: public function handle($request, Closure $next) { if (\Sentinel::guest()) { $age_confirmed = $request->cookie('age'); if (!$

我正在使用Laravel 5.2,我需要创建以下内容:当未注册用户首次访问网站时,显示对话框以确认他或她是18岁以上。我不确定实现这样的东西的最佳方式是什么,我从定义一个新的
agmiddleware
开始:

public function handle($request, Closure $next)
{
    if (\Sentinel::guest()) {
        $age_confirmed = $request->cookie('age');
        if (!$age_confirmed) {
            return redirect('home')
                ->with('age_popup', 'You need to confirm that you are 18+'); // infinite redirecting !!!
        }
    }

    return $next($request);
}
所以,我的想法是存储一个名为
age
的cookie。如果没有cookie-重定向到主页并显示确认对话框。要显示该对话框,我正在使用('age\u popup','您需要确认您是18岁以上')来“闪烁”
age\u popup
会话数据:
->。最后,在我的Blade布局文件中,我将添加引导模式代码,该代码将作为确认对话框,并且仅当出现
$age\u弹出窗口时才会出现,类似于:

@if ($age_popup)
   <script>
       $('#ageModal').modal('show')
   </script>
@endif
@if($age\u弹出窗口)
$(“#ageModal”).modal('show')
@恩迪夫
当显示该模式时-当用户确认他是18岁以上(当他或她单击“确定”按钮时)-它将被关闭,并且(不知何故)将存储一个名为
age
的新cookie

但所有这些都有两个问题:

1.正如您在
agmiddleware
中看到的那样-如果没有该cookie-用户将被重定向到主页。这永远不会起作用,因为它会无限地重定向到主页,最后可能会出现一些错误

所以问题是-我在哪里以及如何检查这个cookie(它将决定是否显示一个模式(弹出窗口)?理想情况下,没有任何重定向


2.当显示该模式时-当用户确认他是18岁以上(当他单击“确定”按钮时)-如果不执行标准操作(非Ajax),我如何创建
age
cookie请求,无需重新加载任何页面…只需关闭模式并设置cookie?

删除中间件。然后在刀片服务器中,将代码替换为:

@if (\Sentinel::guest() && request()->cookie('age'))
   <script>
       $('#ageModal').modal('show')
   </script>
@endif

主路径中的
agmiddleware
省去。这样您就不会有无限重定向。您可以在('hidden.bs.modal',function(){…
上侦听模式
$('myModal').on('hidden.bs.modal',function(){…
设置cookie上的关闭事件。您可以使用它来代替
@if(\Sentinel::guest()&&request()->cookie('age'))
我使用了
@除非(\Sentinel::guest()| | isset($\u COOKIE['age'))
然后一切正常。无论如何,我会检查你的答案,谢谢!
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

setCookie("age", age, 365);