【问题标题】:If statements in blade templating?如果刀片模板中的语句?
【发布时间】:2014-07-15 22:46:44
【问题描述】:

我有一组空数据,在我的刀片模板中我通过以下方式检查:

@if(empty($data))
   It's empty!
@else
   @foreach($data as $asset)
      $asset->alt
   @endforeach
@endif

问题是,我得到了错误:

Trying to get property of non-object

但这甚至不应该发生,因为 if 语句的 else 甚至不应该运行。为什么会这样?

我已检查并显示“它是空的”。

【问题讨论】:

  • $asset->alt 行是错误的,应该是:{{$asset->alt}}。看起来资产不是一个对象。所以我认为它是空的。 $asset 的价值是多少?
  • 啊,这只是问题中的一个错字。关键是 else 甚至不应该运行,但它是,if 也是如此

标签: laravel laravel-4


【解决方案1】:

if-empty 块仅检查$data 是否为空,它不确保数组中的项目 是实际对象。

以这段PHP代码为例:

$data = [1, 2, 3];

if (empty($data))
{
   echo "It's empty!";
}
else
{
   foreach ($data as $asset)
   {
      echo $asset->alt;
   }
}

上面的代码会抛出同样的错误,因为123不是对象。

【讨论】:

  • 数据是我控制器中的一个对象,怎么不在我的视图中?
  • @panthro $data 在您的视图中的对象/数组。您的 $data 数组中的单个项目不是对象。
  • @panthro - 你从哪里得到这个数组?
【解决方案2】:

你可以使用

@if(count($data))
   @foreach($data as $asset)
      {{$asset->alt}}
   @endforeach
@else
   It's empty!
@endif

【讨论】:

    【解决方案3】:

    您可以将 $data 与 null 进行比较

    if ($data == null)
    {
       echo "It's empty!";
    }
    else
    {
       foreach ($data as $asset)
       {
          echo $asset->alt;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 2013-07-11
      • 1970-01-01
      • 2015-09-02
      • 2013-04-29
      • 2016-12-18
      • 2018-07-26
      • 2015-08-05
      相关资源
      最近更新 更多