因为我读到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状态提供常量