由于我已经知道如果回复代码不是206,Chrome浏览器无法循环播放HTML5视频,我想用206代码渲染我的模板。
然而,在渲染模板时,我还没有找到如何指定html代码......有没有人尝试过并成功了?
答案 0 :(得分:6)
在控制器中,您可以创建并返回包含内容和指定返回码的Response对象,例如:
return new Response(
$this->renderView('AcmeDemoBundle:Default:video.html.twig', array(
'param1' => $param1,
'param2' => $param2,
)),
206 // return code
);
希望这个帮助
答案 1 :(得分:6)
您可以使用具有必要状态代码的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
,则会自动生成一个。{1}}。如果你传递了一个,那么它的内容只是设置为渲染模板的内容(正如你在the code中看到的那样)
答案 2 :(得分:1)
我想在你渲染模板之前,你会得到所需的结果:
$this->getContext()->getResponse()->setStatusCode(206);
顺便说一句。
类Symfony\Component\HttpFoundation\Response
为所有有效的HTTP状态提供常量
答案 3 :(得分:1)
新实施
protected function renderError(array $parameters, $statusCode = 500)
{
return $this->render(
'default/error.html.twig',
$parameters,
new Response('', $statusCode)
);
}