由if语句隐藏的变量,仍然在页面上调用

时间:2016-09-23 11:06:41

标签: php laravel laravel-5

在我的页面上,我有两个包装器,一些用户没有权限查看第二个包装器,所以使用@if($user->direct_mail == 0)我隐藏了第二个包装器,这很棒!

然而,当我登录用户时,我得到Trying to get property of non-object我认为这是因为控制器仍然传回第二个包装器的变量,虽然它隐藏但它仍然会引发错误。

如果变量是null或等于0,是否有办法不将变量返回到视图。我的理解是因为内容在if语句中,因此隐藏(它是)它不会抛出错误,因为在页面上没有调用变量。

示例 -

@if($user->direct_mail == 0)
  <div class="wrapper">
    <h2>Wrapper 1#</h2>
    {{ $mailJumbo->dm_sent }}
  </div>
@endif
@if($user->website == 0)
  <div class="wrapper">
    <h2>Wrapper 2#</h2>
    {{ $website->stats }}
  </div>
@endif

路线

return view('home')
    ->with('website', $website)
    ->with('mailJumbo', $mailJumbo)

变量$mailJumbo为空,因为用户在其用户配置文件中没有数据,这就是错误存在的原因。如果用户具有查看两个包装器的正确权限,则错误不存在。

1 个答案:

答案 0 :(得分:1)

您可以在括号输出中检查该变量不是document.getElementById(...).getElementsByClass is not a function

null

刀片引擎在运行时没有解析它,我想,这是你从一个你认为无法访问的块中获取错误的方式。