呈现具有特定状态代码的模板

Render a template with a specific status code

由于我了解到如果响应代码不是 206,Chrome 将无法循环播放 HTML5 视频,因此我想使用 206 代码呈现我的模板。

但是我在任何地方都找不到如何在呈现模板时指定 html 代码...有人已经尝试过并成功了吗?

在控制器中,您可以创建并return一个包含内容和指定return代码的响应对象,例如:

return new Response(
    $this->renderView('AcmeDemoBundle:Default:video.html.twig', array(
            'param1'    => $param1,
            'param2'     => $param2,
        )),
        206  // return code
);

希望对您有所帮助

我想你在渲染模板之前会得到想要的结果:

$this->getContext()->getResponse()->setStatusCode(206);    

顺便说一句。
class Symfony\Component\HttpFoundation\Response 为所有有效的 HTTP 状态提供常量

您可以使用具有必要状态代码的 renderResponse 传递响应对象。

$response = new Response('', 206);

return $this->renderResponse(
// Or return $this->container->get('templating')
    'AcmeBundle:Video:show.html.twig',
    array('video' => video),
    $response
);

如果您不通过 renderResponse 传入 Response,将自动生成一个。如果你传递一个,那么它的内容只是设置为渲染模板的内容(正如你在 the code 中看到的那样)

新实施

protected function renderError(array $parameters, $statusCode = 500)
{
    return $this->render(
        'default/error.html.twig',
        $parameters,
        new Response('', $statusCode)
    );
}