【问题标题】:Generating many URLs in one Symfony Controller action在一个 Symfony 控制器操作中生成多个 URL
【发布时间】:2017-07-27 10:11:46
【问题描述】:

我有一个带有注释路由到“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);
}

【问题讨论】:

  • 试试return new JsonResponse($linksArr);

标签: php symfony


【解决方案1】:

您正在将一个数组传递给响应对象,您应该传递一个字符串。这些是响应对象的参数,来自 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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    相关资源
    最近更新 更多