4

サーバーにapi-platformデモをインストールし、クライアント アプリ (Symfony 3.3 で動作) を実行しました。クラシック ビュー (Twig) で応答を表示したいと考えています。

すべて正常に動作しています。応答を要求して取得できます。

しかし、ここで私は立ち往生しています:ビューに応答をダンプすると、これが得られました

 {"@context":"\/contexts\/Book","@id":"\/books","@type":"hydra:Collection","hydra:member":[{"@id":"\/books\/1","@type":"Book","id":1,"isbn":"9783161484100","title":"1st Book","description":"This is my first book synopsis","author":"Hemingroad","publicationDate":"2018-02-16T14:15:58+00:00","reviews":[]}],"hydra:totalItems":1}

これが私のコントローラーのメソッドです:

 //...
 use GuzzleHttp\Client;

public function newAction(Request $request)
{
     //initialize client API
    $client = new Client([
        'base_uri' => 'http://my.apidomain.com/',
        'timeout'  => 2.0,
    ]);

    //request to API
    $dataBooks = $client->request('GET', 'books', ['auth' => ['login', 'p@$$w0rd']]);
    $listBooks = $dataBooks->getBody()->getContents();
    return $this->render('book/new.html.twig', array(
        'listBooks'   => $listBooks
    ));
}

また、json_decode を試み、$listBooks でJMSSerializerを使用しました。私は美しいオブジェクトを手に入れましたが、ISBNのようなJSON属性、タイトルのようなものにまだアクセスできません

 {% for book in listBooks %}
      {{ dump(book.title) }}
       <!-- .... -->
 {% endfor %}

$listBooks を json_decode すると、次のようになります。

  {{ dump(listBooks) }}

ここに画像の説明を入力

このようにすべてのフィールドにアクセスしようとするとエラーが発生しました

  {{ dump(listBooks.@id) }}
  {{ dump(listBooks['hydra:member']) }}
  ....

何か不足していますか?

ありがとう

4

1 に答える 1