2017-08-22 55 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