我有一个带有注释路线的动作,以及#34; showAllLinks"
/**
* @param Request $request
* @return Response
* @Route("/showAllLinks/")
**/
当访问该操作时,我想为我在同一个控制器中编写的其他几个动作生成URL(相对和绝对)。那可能吗?到目前为止,我已尝试生成几个URL并将其推送到数组中,然后将其包含在响应中,但从我看到的情况来看,Symfony要么是要求
The Response content must be a string or object implementing __toString(), "array" given.
见下面的行动:
public function showAllLinksAction(Request $request)
{
$linksArr = [];
$url1 = $this->generateUrl('helloWorld', [], 302, UrlGeneratorInterface::ABSOLUTE_URL);
$linksArr[] = $url1;
$url2 = $this->generateUrl('goodbye', [], 302, UrlGeneratorInterface::ABSOLUTE_URL);
$linksArr[] = $url2;
$url3 = $this->generateUrl('welcome', [], 302, UrlGeneratorInterface::ABSOLUTE_URL);
$linksArr[] = $url3;
$url4 = $this->generateUrl('welcome', [], 302, UrlGeneratorInterface::ABSOLUTE_URL);
$linksArr[] = $url4;
return new Response($linksArr);
}
答案 0 :(得分:0)
您正在将数组传递给响应对象,您应该传递一个字符串。这些是响应对象的参数,来自Symfony文档:
use Symfony\Component\HttpFoundation\Response;
$response = new Response(
'Content',
Response::HTTP_OK,
array('content-type' => 'text/html')
);
我认为你可以使用
$response = new Response('Content');
或
$response = new Response();
$response->setContent('Content');
在任何情况下,'Content'参数都是一个字符串。您正在尝试设置$ linksArr,这是一个数组。这应该可行,但可能不是您想要实现的结果:
return new Response(implode(",", $linksArr));