Laravel - 试图获取非对象的财产

时间:2017-08-01 07:29:27

标签: laravel

我试图在Laravel中创建一个简单的数据显示表单,以显示给定电话号码的联系方式。电话号码从URL(路由)传递到表单。如果URL不包含电话号码,则表单的所有字段都应为空字符串。为了实现这一点,我只检查是否在没有电话号码($ number)的情况下调用URL,如果是,则创建一个带有正确键和空字符串作为值的关联数组

class InboundCallController
{
    public function inboundCall($number=null){
        if($number==null) {
            $contact=array(
                "id"=>"",
                "registration_no"=>"",
                "title"=>"",
                "firstname"=>"",
                "lastname"=>"",
                "primary_contact"=>"",
                "secondary_contact"=>"",
                "email"=>"",
                "gender"=>"",
                "address_line1"=>"",
                "address_line2"=>"",
                "city_state_province"=>"",
                "zip"=>"",
                "country"=>"");

            return view('InboundCall')
                ->with('number',null)
                ->with('contact',$contact);
        }

        $contact=$this->retrieveContact($number);

        return view('InboundCall')
            ->with('number',$number)        //CLI passed from soft-phone
            ->with('contact',$contact)    //Contact details retrieved from db
    }

    private function retrieveContact($number){
        return DB::table('contacts')    //Retrieve contact
            ->where('primary_contact',$number)
            ->first();
    }

}

尝试获取非对象的属性(查看:/var/www/html/csp/resources/views/InboundCall.blade.php)

在刀片的第37行,我有这个:

value="{{$contact->primary_contact}}"

2 个答案:

答案 0 :(得分:2)

这个想法......如果$numbernull,那么您会向视图发送一个关联数组,该数组不是object类型。它是'是array,因此您无法通过->访问这些值。尝试在视图中访问此类数据,在$ contact为null时将@添加到void提升错误

value="{{ @$contact['primary_contact'] }}" 
编辑(对于遇到同样问题的其他人):

如果您有$ number和一个数组,您可能还想考虑不发送对象..您可以发送一个新的联系人,其中Contact是模型的名称,并可能将Contact的字段初始化为空或制作一个static方法Contact :: emptyContact返回类型为Contact的对象,因此您不必检查视图中的数据类型

答案 1 :(得分:1)

value="{{$contact->primary_contact}}"

这里$ contact是一个数组而不是对象像这样使用它

value="{{$contact['primary_contact']}}"