我有两个实体作者和书
book | manytoOne |author
id | |id
idAuthor |
在作者控制器中我有一个Action函数,可以获取作者的详细信息和所有书籍(使用转发函数获取书籍)
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);
}
但它只显示作者信息
或当我只编辑书籍return $books
时,我收到了这个错误
控制器必须返回响应(Array(0 => Object(AppBundle \ Entity \ Book),1 => Object(AppBundle \ Entity \ Book),2 => Object(AppBundle \ Entity \ Book)给))。 (500内部服务器错误)
提前感谢任何指导
答案 0 :(得分:1)
看起来您使用的是API平台,无需创建自定义控制器即可实现您的目标:
array[1][@"name"]
资源添加过滤器,以便能够按名称搜索作者:https://api-platform.com/docs/core/serialization-groups-and-relations#embedding-relations 答案 1 :(得分: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;