如何从Laravel中的Guzzle Request传递变量

时间:2018-01-23 12:35:10

标签: php json laravel

我正在尝试将一个变量从guzzle请求传递给我的视图。

这是我的控制器

  $client = new Client();
  $res = $client->request('GET', 'https://api.iugu.com/v1/customers?api_token=secret');
  $result = $res->getBody();
  $clientes = json_decode($result, true);
  return view('sections.client.index')->with('clients', $clientes['items']);

但返回错误:

Trying to get property of non-object (View: /var/www/html/cron_verify/resources/views/sections/client/index.blade.php)

这是我的JSON

enter image description here

这是我的观点

@extends('layouts.app')
@section('content')
<div class="container">
  <div class="row">
    <div class="col-md-12 col-md-3-offset table_box">
      <table class="table">
        <tr>
          <th>Nome</th>
          <th>Status</th>
          <th>Faturas</th>
          <th>Situação</th>
        </tr>
        @foreach($clients as $value)
        <tr>
          <td>{{$value->name}}</td>
          <td>{{$value->email}}</td>
          <td>{{$value->number}}</td>
        </tr>
        @endforeach
      </table>
    </div>
  </div>
</div>
@endsection

我不明白为什么我收到此错误,因为该值在JSON响应中。导致错误的原因是什么?

4 个答案:

答案 0 :(得分:2)

您需要access元素作为array值。

@foreach($clients as $value)
    <tr>
      <td>{{$value["name"]}}</td>
      <td>{{$value["email"]}}</td>
      <td>{{$value["number"]}}</td>
    </tr>
@endforeach

答案 1 :(得分:1)

正如错误所说,你正在使用数组,没有对象。请改用此foreach。

    @foreach($clients as $value)
    <tr>
      <td>{{$value['name']}}</td>
      <td>{{$value['email']}</td>
      <td>{{$value['number']}}</td>
    </tr>
    @endforeach

答案 2 :(得分:1)

您正在错误地访问阵列

<强>尝试:

@foreach($clients as $value)
    <tr>
      <td> {{$value["name"]}} </td>
      <td> {{$value["email"]}} </td>
      <td> {{$value["number"]}} </td>
    </tr>
@endforeach

答案 3 :(得分:1)

因为你使用$clientes = json_decode($result, true);返回一个关联对象而不是你的视图,你必须使用它:

<tr>
      <td>{{$value['name']}}</td>
      <td>{{$value['email']}}</td>
      <td>{{$value['number']}}</td>
    </tr>