如何从symfony控制器抛出400错误请求?

Pat*_*ick 5 php symfony

我已经建立了一个非常简单的Symfony 3.3控制器的存根,其主要动作如下所示:

/**
 * @Route("/pair-gallery/{id}")
 */
public function indexAction(Int $id)
{
    $output = [];
    return new JsonResponse($output);
}
Run Code Online (Sandbox Code Playgroud)

当我给它一个字符串作为url中的参数(而不是整数)时,当前出现500错误。这并不可怕,但这并不是我想要的。

我如何告诉Symfony发回400(“错误请求”)响应代码?

Ale*_*eri 7

您可以像这样指定返回码:

return new JsonResponse($output, 400);
Run Code Online (Sandbox Code Playgroud)


FMK*_*FMK 6

您可以简单地引发一个异常,该异常会自动转换为HTTP 400响应:

throw new BadRequestHttpException('Message');
Run Code Online (Sandbox Code Playgroud)

如果要具体说明抛出的http错误代码(也许想抛出诸如418之类的晦涩错误代码),则可以将其作为第三个参数传递:

throw new BadRequestHttpException('Message', null, 418);
Run Code Online (Sandbox Code Playgroud)