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

Laravel issue- "Trying to get property of non-object"

控制器:

1
2
3
4
5
6
$args = array();
$args['name'] ="Robin";
$args['email'] ="[email protected]";
$clientpayments = Payments::getPaymentByClient($id);
$args['activity'] = $clientpayments;
return view('clients.show',["args" => $args]);

视图:

1
2
3
4
5
6
7
8
{{ $args->name }}
{{ $args->email }}

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

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

谢谢!


由于您使用的是数组,请更改以下内容:

1
2
{{ $args->name }}
{{ $args->email }}

收件人:

1
2
{{ $args['name'] }}
{{ $args['email'] }}


知道了。

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

还是谢谢你。


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

1
2
3
4
5
6
7
8
9
10
11
$payments = Payments::getPaymentByClient($id);

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

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

刀片模板(如果你有一个对象)

1
2
3
4
5
6
7
{{ $args->name }}
{{ $args->email }}

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

刀片模板(如果你有一个数组)

1
2
3
4
5
6
7
{{ $args['name'] }}
{{ $args['email'] }}

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