2017-08-22 34 views
0

我在笔者控制器我有一个动作功能得到作者的详细信息和他所有的书两个实体的作者和书籍API的平台要求的问题

book  | manytoOne |author 
id  |   |id 
idAuthor | 

(使用转发功能来获取书籍)

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); 

} 

,但只显示作者信息

或时,即时通讯rutrning仅书籍return $books我得到这个误差

控制器必须返回响应(阵列(0 = >对象(的appbundle \实体\书),1 = >对象(的appbundle \实体\书), 2 = > Object(AppBundle \ Entity \ Book))给出)。 (500内部服务器错误)

预先感谢任何指导

回答

0

一个Symfony的控制器必须始终返回Symfony\Component\HttpFoundation\Response类的一个实例。你不能简单地返回任意值,因为Symfony不知道如何渲染它。

有两种方法来创建一个控制器内Response对象:

首先,直接实例化。例如:

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

其次,如果你的控制器是一个子类的Symfony\Bundle\FrameworkBundle\Controller\Controller,您可以使用render()方法来访问模板引擎:

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

更多见https://symfony.com/doc/current/controller.html