2

ローカル API と通信する Laravel 5.2 プロジェクトを作成しています。そして、Guzzle レスポンスボディの処理に問題があります。

私のコントローラー:

public function getClients(){
    $guzzle = new Client();
    try{

        $response = $guzzle->request('GET', 'http://localhost:3000/client')->getBody();           
        return view('home.clients', ['clients' => $response]);

    }catch(ClientException $e){
     //Handling the exception
    }
}

私のブレード ビュー:

<h2>Client list</h2>

{{ $clients }}//Just to inspect it

@forelse ($clients as $client)
    <h3>{{ $client->name }}</h3>
    <h3>{{ $client->email }}</h3>
    <h3>{{ $client->country }}</h3>
@empty
    <h3>No clients here</h3>
@endforelse

ループまたはコントローラーにエラーはありません。また、ブラウザーにストリーム オブジェクトが表示されていますが、ループには何も表示されません。

私はすでに Guzzle 6 レスポンスボディのドキュメントを読みましたが、私のような初心者にとってはそれほど明確ではありません。

考え?

ブラウザ出力: ブラウザ出力

4

1 に答える 1

2

この JSON をjson_decode()次のようにデコードする必要があります。

public function getClients(){
    $guzzle = new Client();
    try {

        $response = json_decode($guzzle->request('GET', 'http://localhost:3000/client')->getBody());           
        return view('home.clients', ['clients' => $response]);

    } catch(ClientException $e){
         //Handling the exception
    }
}

また{{ $clients }}//Just to inspect it、ビューから削除できます。

JSON と Guzzle の詳細については、こちら: Guzzle 6: no more json() method for requests を参照してください。

于 2016-02-03T00:39:20.637 に答える