Laravel:无法在Blade @if块内显示JavaScript

时间:2018-06-28 04:07:19

标签: php laravel-5.1 laravel-blade

是否可以做这样的事情...

@if(Session::has('foo'))
    <script>
    // My JavaScript function
    </script>
@endif

我试图仅在存在某个会话变量的情况下放置Facebook像素代码。

请告知。


请注意[更新] :会话变量可以正常使用。我看得懂。问题在别的地方。这让我感到困惑。

这是代码:

@if(session('displayPixelCode'))
    #1. Session variable's value is : {{ session('displayPixelCode') }}          
    <script>
        // My JavaScript code goes here 
    </script>
@else
    #2. Session variable's value is : {{ session('displayPixelCode') }}
    <script>
        // My JavaScript code goes here 
    </script>
@endif

如果我查看渲染视图的底部,则会看到此内容(会话变量的正确值)... enter image description here

如果我查看渲染页面的源代码,我会看到这一点(执行@else分支)。 enter image description here

2 个答案:

答案 0 :(得分:4)

我正在使用laravel 5.4及其工作方式,它可能会帮助您

@if(!empty(\Session::has('sessVar')))
    <script type="text/javascript">
      function myFunction(p1, p2) {
        return p1 * p2;
      }

      var ale = myFunction(4, 3);
      alert(ale);
   </script>
@endif

答案 1 :(得分:0)

我终于弄清楚是什么原因造成的。必须使用!is_null(session('displayPixelCode'))

这是现在的样子:

@if(!is_null(session('displayPixelCode')))
    <script>
        !function(f,b,e,v,n,t,s)  
        {if(f.fbq)return;n=f.fbq=function(){n.callMethod?  
        n.callMethod.apply(n,arguments):n.queue.push(arguments)};  
        if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';  
        n.queue=[];t=b.createElement(e);t.async=!0;  
        t.src=v;s=b.getElementsByTagName(e)[0];  
        s.parentNode.insertBefore(t,s)}(window, document,'script',  
        'https://connect.facebook.net/en_US/fbevents.js');  
        fbq('init', 'xxxxxxxxxxxxxxxx');  
        fbq('track', 'PageView');  
        fbq('track', 'Lead');  
    </script> 
    <noscript>
        <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=xxxxxxxxxxxxxxxx&ev=PageView&noscript=1"/>
    </noscript>       
@endif