当我尝试使用Laravel Session在刀片中设置JS变量来刷新一些数据时,我对Laravel 4.2产生了一些奇怪的看法.这很简单,我无法弄清楚我错过了什么……
目标:在用户注册后立即触发Javascript网站导览.
方法:将welcome_tour变量刷新到session,然后在页面刷新时设置JS布尔值,然后在JS中启动巡视.
我的注册函数以Session设置结束:
Session::flash('welcome_tour', TRUE);
我正在测试它是否被拾取并在我的刀片中使用以下内容正确设置JS变量:
<script>
@if(Session::has('welcome_tour'))
var welcome_tour = true;
@else
var welcome_tour = false;
@endif
</script>
{{ var_dump(Session::all()) }}
生成的HTML中的JS片段表示找不到welcome_tour 🙁
<script>
var welcome_tour = false;
</script>
但是var_dump打印到屏幕上的会话详细信息表明它已正确设置:
array (size=4)
'_token' => string 'HHBowu6wdYlIKy4kFiWYwCe4lQRkFbG7jdNDlYXQ' (length=40)
'flash' =>
array (size=2)
'old' =>
array (size=1)
0 => string 'welcome_tour' (length=12)
'new' =>
array (size=0)
empty
'login_82e5d2c56bdd0811318f0cf078b78bfc' => string '1137' (length=4)
'welcome_tour' => boolean true
如何将Session变量存在而不存在?
最佳答案 尝试使用类似的东西.
<script type="text/javascript">
<?php
if(Session::has('welcome_tour')){
echo "welcome_tour = true";
}else{
echo "var welcome_tour = false";
}
?>
</script>
并尝试使用dd(Session :: has(‘welcome_tour’))来验证输出是否有条件.可能是session has方法返回false.