2017-08-22 5 views
0

J'ai deux entités auteur et livreApi-plateforme d'émission de demande

book  | manytoOne |author 
id  |   |id 
idAuthor | 

dans le contrôleur de l'auteur j'ai une fonction d'action qui obtient les détails de l'auteur et tous ses livres (en utilisant la fonction avant d'obtenir les livres)

public function authorDetailsAction($id){ 

$author= $this->getDoctrine()->getRepository(Author::class)->find($id); 

$books= $this->forward('AppBundle:Book:authorBooks',array('id' => $id)); 

return array('author' => $author, 'books' => $books); 

} 

mais montre seulement des informations de l'auteur

ou quand je suis rutrning que les livres return $books j'ai eu cette erreur

Le contrôleur doit renvoyer une réponse (Array (0 = > Object (AppBundle \ Entité \ Livre), 1 = > Object (AppBundle \ Entité \ Livre), 2 = > Object (AppBundle \ Entity \ Book)) donné). (500 Internal Server Error)

de Merci à l'avance pour toute orientation

Répondre

0

Un contrôleur Symfony doit toujours retourner une instance de la classe Symfony\Component\HttpFoundation\Response. Vous ne pouvez pas simplement renvoyer une valeur arbitraire, car Symfony ne sait pas comment le rendre.

Il existe deux façons de créer un objet Response dans un contrôleur:

D'abord, instanciation directe. Par exemple:

$response = new Response("This is my content.", 200); 
$response->headers->set('Content-Type', 'text/plain'); 
return $response; 

En second lieu, si votre contrôleur est une classe enfant de Symfony\Bundle\FrameworkBundle\Controller\Controller, vous pouvez utiliser la méthode render() pour accéder au moteur de templating

$response = $this->render("foo/bar.html.twig", ["foo" => "bar"]); 
$response->headers->set('Content-Type', 'text/plain'); 
return $response; 

Voir https://symfony.com/doc/current/controller.html pour plus.