2017-07-27 63 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)); 
相關問題