Laravel 问题-“试图获取非对象的属性”

Posted

技术标签:

【中文标题】Laravel 问题-“试图获取非对象的属性”【英文标题】:Laravel issue- "Trying to get property of non-object" 【发布时间】:2018-06-27 16:32:40 【问题描述】:

控制器:

$args = array();
$args['name'] = "Robin";
$args['email'] = "asdasd@asdasd.net";
$clientpayments = Payments::getPaymentByClient($id);
$args['activity'] = $clientpayments;
return view('clients.show',["args" => $args]); 

查看:

 $args->name 
 $args->email 

@if (isset($args['activity']))        
@foreach ($args['activity'] as $act)
$act->job_name
@endforeach
@endif;

所以问题是 $activity 循环工作正常,但 $name 和 $email 返回一个非对象错误......有什么想法我要去哪里错了吗?

谢谢!

【问题讨论】:

数组不是对象。 Trying to get property of non-object in的可能重复 【参考方案1】:

由于您使用的是数组,因此请更改:

 $args->name 
 $args->email 

收件人:

 $args['name'] 
 $args['email'] 

【讨论】:

【参考方案2】:

您正在尝试访问一个对象值,但您正在向您的视图发送一个数组。

$payments = Payments::getPaymentByClient($id);

$args = array([
  'name' => 'Robin',
  'email' => 'asdasd@asdasd.net',
  'activity' => $payments, // Expecting a collection
]);

return view('clients.show', [
  "args" => (object) $args // Cast into an object
]); 

刀片模板(如果您有对象)

 $args->name 
 $args->email 

// If your activity is a collection
@foreach ($args->activity as $act)
   $act->job_name 
@endforeach

刀片模板(如果您有数组)

 $args['name'] 
 $args['email'] 

// If your activity is a collection
@foreach ($args['activity'] as $act)
   $act->job_name 
@endforeach

【讨论】:

【参考方案3】:

知道了。

一个愚蠢的错误,但我只是在学习 Laravel。我在视图中包含了 $args,而不仅仅是 $name、$email 和 $activity,它们运行良好。

还是谢谢。

【讨论】:

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

Laravel 问题-“试图获取非对象的属性”

Laravel 5.6 - “试图获取非对象的属性”

Laravel 属于试图获取非对象的属性

Laravel:试图获取非对象的属性

Laravel问题试图获取非对象的属性“id”

Laravel 5.6 试图获取非对象的属性