渲染具有特定状态代码的模板


Render a template with a specific status code

因为我读到Chrome在响应代码不是206的情况下无法循环HTML5视频,所以我想用206代码来呈现我的模板。

然而,我在任何地方都没有找到如何在呈现模板时指定html代码。。。有人已经尝试过并成功了吗?

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

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

希望这能帮助

您可以传递一个带有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,则会自动生成一个。如果你传递了一个,那么它的内容就被设置为渲染模板的内容(正如你在代码中看到的)

新的实现

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

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

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

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