Laravel Blade - @if( false ) 导致 "Trying to get property of non-object" 错误

Laravel Blade - @if( false ) results in "Trying to get property of non-object" error

我的 blade 模板有一个 @if 检查,当结果为假时,会导致错误 "Trying to get property of non-object".

@if中,我只是调用一个方法来查看是否有任何结果,其中returns一个布尔值:

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

@else

但是如果它 returns false,我得到错误。 @if 不应该能够处理 false 条件吗?

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

@if ( false )

我用Laravel 4.2.

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

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

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

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

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