2017-07-27 44 views
2

我有注释路线的行动为“showAllLinks”生成多个网址的一个Symfony的控制器动作

/** 
    * @param Request $request 
    * @return Response 
    * @Route("/showAllLinks/") 
    **/ 

当被访问的行动,我想生成的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

尝试用'return new JsonResponse($ linksArr);' – Matteo

回答

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

在任何情况下, '内容' 参数是一个字符串。您正试图设置$ linksArr,它是一个数组。这应该工作,虽然可能不是你想要达到的结果:

return new Response(implode(",", $linksArr)); 
相关问题