试图在 Laravel 4 中获取非对象的属性

Posted

技术标签:

【中文标题】试图在 Laravel 4 中获取非对象的属性【英文标题】:trying to get property of a non object in Laravel 4 【发布时间】:2013-09-06 02:48:13 【问题描述】:

我正在使用 Laravel 4,如果用户已登录,我会尝试传递信息。如果用户未登录,我想以纯文本形式显示其他内容

BookController

public function showIndex()  

    $user_information = UsersInformation::find(Auth::user()->id);

    return View::make('book.index', array('pageTitle' => 'Book your appointment',  'user_information' => $user_information));

我尝试在 $user_information 变量上方添加 isset() 但收到此错误消息

Cannot use isset() on the result of a function call 
   (you can use "null !== func()" instead)

Index.blade.php

        @if (isset($user_information->first_name))
           <p> You already have the 1 step complete let's move on to the second step!</p>
        @else
           <p>first step. let's create a login name and let's get to know you better</p>
        @endif

在此处为名字添加了 isset,因为如果他们访问自己的帐户,则必须提供名字。

我尝试如下添加isset:

             if (isset(UsersInformation::find(Auth::user()->id))) 
                $user_information = UsersInformation::find(Auth::user()->id);
             

我当然尝试过使用推荐的语法,但随后再次出现“尝试获取非对象的属性”错误

【问题讨论】:

向我们展示您使用isset() 的实际代码,以及任何其他相关代码。 我编辑了我的问题。谢谢! 【参考方案1】:

需要先检查用户是否登录:

public function showIndex()  

    if (Auth::check())
    
        $user_information = UsersInformation::find(Auth::user()->id);
    
    else
    
        $user_information = false;
    

    return View::make('book.index', array('pageTitle' => 'Book your appointment',  'user_information' => $user_information));

然后你就:

@if ($user_information and $user_information->first_name)
   <p> You already have the 1 step complete let's move on to the second step!</p>
@else
   <p>first step. let's create a login name and let's get to know you better</p>
@endif

【讨论】:

看起来是这样做的。谢谢!

以上是关于试图在 Laravel 4 中获取非对象的属性的主要内容,如果未能解决你的问题,请参考以下文章

试图在 laravel 5.4 上获取非对象错误的属性

试图在 laravel 5.5 中获取非对象的属性

试图在laravel中获取非对象的属性'expiry_date'

错误:试图在 Laravel 中获取属性 ID 错误(非对象)

如何处理试图在laravel中获取非对象错误的属性?

如何修复“试图获取非对象的属性”Laravel 5