【问题标题】:Laravel Session variables in Blade @ifBlade @if 中的 Laravel 会话变量
【发布时间】:2017-09-30 06:04:38
【问题描述】:

在尝试使用 Laravel Session 在刀片中设置 JS 变量以刷新一些数据时,我在 Laravel 4.2 中遇到了一些奇怪的问题。这很简单,我无法弄清楚我错过了什么......

目标:在用户注册后立即触发 Javascript 网站浏览。 方法:将一个welcome_tour 变量写入会话,然后在页面刷新时设置一个JS 布尔值,从而在JS 中启动游览。

我的注册功能以会话设置结束:

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 sn-p 表示未找到 welcome_tour :-(

<script>
    var welcome_tour = false;
</script>

但是 var_dump 打印到屏幕上的 Session 详细信息表明它设置正确:

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 变量怎么可能既存在又不存在?

【问题讨论】:

  • 如果你打开浏览器控制台并输入welcome_tour会发生什么?另外,当您在浏览器中查看页面源代码时,HTML 中是否包含welcome_tour
  • 谢谢弗兰克。奇怪的是,控制台告诉我welcome_tour 正确设置为true。我想这足以让我触发我的旅程,但奇怪的是 HTML 源将它设置为 false,而在其他地方却神秘地设置为 true。
  • 您是否可以在多个位置设置welcome_tour 的值?所以您查看的是 HTML 源代码的错误部分?
  • 否 - 全局查找仅在此位置显示 welcome_tour。为了 100% 相信,我将变量名称更改为绝对唯一的 jabba_the_hut 并得到完全相同的结果——HTML 显示变量设置为 false,但控制台将其报告为 true。

标签: php laravel


【解决方案1】:

尝试使用类似的东西。

<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')) 来验证输出是否符合条件。可能是会话的方法返回 false。

【讨论】:

  • 感谢 Safoor,但这与我已经使用的代码有何不同?您使用的是原生 php &lt;?phpecho,而我使用的是刀片 @if{{ }},但除此之外它们不一样吗?
  • 它只是在 if 语句下运行条件有所不同。
猜你喜欢
  • 1970-01-01
  • 2018-06-10
  • 2018-01-30
  • 2021-04-08
  • 1970-01-01
  • 2014-02-06
  • 2016-10-21
  • 2017-05-17
  • 2018-08-03
相关资源
最近更新 更多