Jquery Laravel:当未注册用户第一次访问网站时,显示对话框,确认他们是18岁+;
我正在使用Laravel 5.2,我需要创建以下内容:当未注册用户首次访问网站时,显示对话框以确认他或她是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 (!$
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);