Blade @if中的Laravel Session变量

时间:2015-04-15 11:50:24

标签: php laravel

当我尝试使用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变量如何既可以存在又不存在?

1 个答案:

答案 0 :(得分:2)

尝试使用类似的东西。

<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的方法返回false。