【问题标题】:Laravel Blade - @if( false ) results in "Trying to get property of non-object" errorLaravel Blade - @if( false ) 导致“尝试获取非对象的属性”错误
【发布时间】:2019-05-06 04:22:50
【问题描述】:

我的刀片模板有一个 @if 检查,当它被证明是错误的时,会导致错误 "Trying to get property of non-object"

@if中,我只是调用了一个方法,看看有没有结果,返回一个布尔值:

@if( Book::isUserCoauthor($book, Auth::user()->id) )

@else

但如果它返回false,我会收到错误消息。 @if 不应该能够处理false 条件吗?

如果我这样做会发生同样的错误:

@if ( false )

我使用 Laravel 4.2。

【问题讨论】:

  • 你确定那条线是罪魁祸首吗?
  • 您是否添加@endif 以关闭if

标签: laravel laravel-4 laravel-blade


【解决方案1】:

我认为您遇到的问题是因为您试图获取用户的 ID,即使他没有经过身份验证。

因此,您可以通过首先检查用户是否经过身份验证来改进检查,除非整个视图受到 auth 中间件的保护。

@if( Auth::check() && Book::isUserCoauthor($book, Auth::user()->id) )

【讨论】:

  • 我试过但不是这样。我从 Auth::user()->id 获取用户 ID。
  • 我知道你是怎么得到它的,但是如果用户未经身份验证,Auth::user() 返回null,因此你得到错误,试图访问id 上的null 对象。检查您是否在 null 对象上有类似的其他用法。
【解决方案2】:

如果仅在 if() 子句中的条件转换为 false 时出现错误,则您很可能正在访问您不应该访问的 else 块中的属性。

@if( !Book::isUserCoauthor($book, Auth::user()->id) )
   // this seems fine
@else
   // here you are doing something bad
@endif

【讨论】:

  • 是的!那是我的愚蠢。所以问题出在某个地方(我可能可以解决它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2016-06-13
相关资源
最近更新 更多